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]+)

будет красиво