我有一个需要替换结尾的单词列表。用正则表达式替换单词的末尾
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");
下面的正则表达式模式maches的位置下面的前缀
(?<=prefix)find\b
在我们的例子中,我们使用\w+
作为前缀,表示一个或多个单词字符
(?<=\w+)ings\b
这工作,因为前缀不属于所选文字的一部分。
你可以使用'\ B'来代替(不是字边界)。即'\ Bings \ b' – 2015-02-08 21:39:01
这不适用于我的系统,但是用'(?<=。+)ings' – Cyral 2015-02-08 21:39:51
@ LucasTrzesniewski的想法很好,很简单。 '\ Bings \ b'适合我(.NET)。不是在“结”之前结束的单词,而是在“结”之后结尾的单词。 – 2015-02-08 21:44:09
这是因为你正在替换匹配正则表达式的字符串中的所有内容。为什么不使用usula'string.Replace'方法? – 2015-02-08 21:24:51
我只想要结束替换,而不是字符串可能出现的开始或中间。 – 2015-02-08 21:26:10
然后你需要处理正则表达式组。看看这篇文章,可能会有所帮助:https://msdn.microsoft.com/en-us/library/ewy2t5e0(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet -5 – 2015-02-08 21:27:40