Регулярное выражение /$'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
)
- конец группы без захвата $
- конец строки.