Как использовать RegEx для сопоставления списка строк в C #? - PullRequest
1 голос
/ 06 января 2009

Мне нужно найти все совпадения регулярных выражений в списке строк. Например, мне нужно иметь возможность взять строку «Этот foo является foobar» и сопоставить любые экземпляры «foo» или «bar». Каким будет правильный шаблон для этого? Кроме того, какую санитарию ввода мне нужно было бы сделать, чтобы вводимый текст не нарушал шаблон?

1 Ответ

4 голосов
/ 06 января 2009

Я немного неуверен в том, каков твой вопрос. Чтобы соответствовать "foo" или "bar", вы просто хотите "foo|bar" для вашего паттерна. Если вы хотите сделать это со списком строк, вы, вероятно, захотите проверить каждую строку отдельно - вы могли бы присоединиться сначала к строкам и проверить , что , но я не уверен, что это будет очень полезно. Если вы хотите получить точный текст, соответствующий вашему шаблону, вы должны заключить шаблон в круглые скобки - например, "([fg]oo|[bt]ar)", что будет соответствовать «foo», «goo», «bar» или «tar», - затем используйте Groups свойство объекта Match для извлечения этих захватов, так что вы можете точно определить, какое слово соответствует. Groups[1] - это первое захваченное значение (то есть значение в первом наборе скобок в вашем шаблоне). Groups[0] - это весь матч. Вы также можете назвать ваши снимки - "(?<word>[fg]oo|[bt]ar)" - и обращаться к ним по имени - Groups["word"]. Я бы рекомендовал прочитать документацию по элементам языка регулярных выражений .

Что касается очистки входных данных, то нет входных данных, которые "сломали бы" регулярное выражение. Это может помешать совпадению, но это действительно своего рода регулярные выражения, не так ли?

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