регулярное выражение, чтобы найти слово до и после определенного слова - PullRequest
13 голосов
/ 29 апреля 2011

Мне нужно регулярное выражение, которое дает мне слово до и после определенного слова, включая само слово для поиска.

Как: " Это какой-то фиктивный текст для поиска слова " должен дать мне строку "dummy text to", когда text - мой поиск слово.

Другой вопрос, возможно, что предоставленная строка будет содержать более одного раза искомое слово, поэтому я должен иметь возможность получить все совпадения в этой строке с помощью C #.

Как " Это какой-то фиктивный текст, чтобы найти слово в строке, полной текста и слов " Должен вернуться:

  • "пустышка текст до"
  • текстом и"

EDIT: На самом деле мне нужно вернуть все совпадения, содержащие слово для поиска. Несколько примеров: Текст слишком прочитан. -> Текст

Прочитайте мой текст. -> мой текст

Это пример текстового поля -> пример текстового поля

Ответы [ 4 ]

17 голосов
/ 29 апреля 2011

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 la@text.be 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 la@text.be to
7 голосов
/ 29 апреля 2011
//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
*/
2 голосов
/ 29 апреля 2011
/[A-Za-z'-]+ text [A-Za-z'-]+/

Должно работать в большинстве случаев, включая переносные и сложные слова.

1 голос
/ 29 апреля 2011
([A-z]+) text ([A-z]+)

будет хорошо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...