найти завершающее слово с помощью регулярного выражения - PullRequest
0 голосов
/ 08 декабря 2018

Я хочу узнать, заканчиваются ли слова на 's или' m или ', используете ли вы регулярное выражение в c #.

if (Regex.IsMatch(word, "/$'s|$'re|$'m/"))
   textbox1.text=word;

1 Ответ

0 голосов
/ 09 декабря 2018

Регулярное выражение /$'s|$'re|$'m/ .NET соответствует 3 альтернативам:

  • /$'s - / в конце строки, после которого следует 's (это никогда не будет совпадать, посколькуможет быть без текста после конца строки)
  • $'re - конец строки, а затем 're должен следовать (опять же, никогда не будет совпадать)
  • $'m/ - конецстрока с 'm/ для последующего (опять же, никогда не будет совпадать).

В регулярном выражении .NET разделители регулярных выражений не используются , таким образом, первый и последний /обрабатываются как буквенные символы, которым движок пытается соответствовать.

Якорь $ сигнализирует конец строки и использует что-либо после того, как шаблон не соответствует строке (ну, если у вас нет завершающего \n после этого, но это крайний случай, который редко вызывает какие-либо проблемы).Просто для справки: чтобы соответствовал самому концу строки в регулярном выражении .NET , используйте \z.

То, что вы пытались написать, было

Regex.IsMatch(word, "'(?:s|re|m)$")

Или,если вы помещаете односимвольные альтернативы в один класс символов :

Regex.IsMatch(word, "'(?:re|[sm])$")

См. демонстрационный пример regex .

Details

  • ' - одинарная кавычка
  • (?: - начало группы без захвата :
    • re- re подстрока
    • | - или
    • [sm] - класс символов, соответствующий s или m
  • ) - конец группы без захвата
  • $ - конец строки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...