У меня есть список слов, которые мне нужно заменить концами.Замена конца слова регулярным выражением
Regex reg = new Regex("(.+)ings");
word = reg.Replace(word,"thly");
Я хочу тогда abcdeings
=>abcdethly
, но я только получаю thly
У меня есть список слов, которые мне нужно заменить концами.Замена конца слова регулярным выражением
Regex reg = new Regex("(.+)ings");
word = reg.Replace(word,"thly");
Я хочу тогда abcdeings
=>abcdethly
, но я только получаю thly
Используйте $
вариант в конце строки, это означает конец строки, или в качестве альтернативы, \b
вариант, который обозначает границу слова
word = Regex.Replace(word, "ings$", "thly");
Вы можете использовать \b
разделителем:
string word = Regex.Replace("abcdeings",@"ings\b","thly");
Read here.
Следующая регулярное выражение шаблон maches позиции после префикса
(?<=prefix)find\b
В нашем случае мы используем \w+
в качестве префикса, который обозначает один или несколько слов символов
(?<=\w+)ings\b
Это работает, потому что префикс не является частью выделенного текста.
Вместо этого вы можете использовать '\ B' (а не границу слова). т.е. '\ Bings \ b' –
Это не работает в моей системе, но делает это с' (? <=. +) ings' – Cyral
@ Идея LucasTrzesniewski - это хорошо и просто. '\ Bings \ b' работает для меня (.NET). Не слово, заканчивающееся до «ings» и слово, заканчивающееся после «ings». –
Это потому, что вы заменяете все в строке, соответствующей регулярному выражению. Почему бы не использовать метод usula 'string.Replace'? –
Мне нужен только конец, а не начало или середину, где может появиться строка. –
Затем вам нужно иметь дело с группами регулярных выражений. Просмотрите эту статью, возможно, поможет: https://msdn.microsoft.com/en-us/library/ewy2t5e0(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet -5 –