Regex, чтобы найти слово до и после определенного слова
Мне нужно регулярное выражение, которое дает мне слово до и после определенного слова, включая само слово поиска.
Вроде: "Это какой-то фиктивный текст, чтобы найти слово" должен дать мне строку "фиктивный текст текст", когда текст - мое поисковое слово.
Другой вопрос, возможно, что предоставленная строка будет содержать больше, чем раз слово поиска, чтобы я мог получить все совпадения в этой строке с помощью С#.
Как "Это какой-то фиктивный текст, чтобы найти слово в строке, полной текста и слов"
Должен вернуться:
- "dummy текст в"
- "с текстом и
EDIT:
На самом деле я должен вернуть все совпадения, содержащие слово поиска.
Несколько примеров:
Текст слишком читается. → Текст
Прочитайте мой текст. → мой текст
Это пример текстового поля → пример текстового поля
Ответы
Ответ 1
EDIT:
Если вы хотите захватить весь контент из пространства перед первым словом в пространство после использования слова:
(?:\S+\s)?\S*text\S*(?:\s\S+)?
Простые тесты:
string input = @"
This is some dummy text to find a word in a string full with text and words
Text is too read
Read my text.
This is a text-field example
this is some dummy [email protected] to read";
var matches = Regex.Matches(
input,
@"(?:\S+\s)?\S*text\S*(?:\s\S+)?",
RegexOptions.IgnoreCase
);
совпадения:
dummy text to
with text and
Text is
my text.
a text-field example
dummy [email protected] to
Ответ 2
//I prefer this style for readability
string pattern = @"(?<before>\w+) text (?<after>\w+)";
string input = "larry text bob fred text ginger fred text barney";
MatchCollection matches = Regex.Matches(input, pattern);
for (int i = 0; i < matches.Count; i++)
{
Console.WriteLine("before:" + matches[i].Groups["before"].ToString());
Console.WriteLine("after:" + matches[i].Groups["after"].ToString());
}
/* Output:
before:larry
after:bob
before:fred
after:ginger
before:fred
after:barney
*/
Ответ 3
/[A-Za-z'-]+ text [A-Za-z'-]+/
Должен работать в большинстве случаев, включая дефис и сложные слова.
Ответ 4
([A-z]+) text ([A-z]+)
будет красиво