正则表达式:如何不匹配单词的最后一个字符?

时间:2009-10-23 19:44:25

标签: c# .net regex

我正在尝试创建一个与单词(仅限a-z)不匹配的正则表达式,如果该单词的末尾有:但是匹配它。但是,这个词位于较大的正则表达式的中间,所以我(不要认为)你可以使用负面的lookbehind和$元字符。

我尝试了这种消极的前瞻:

([a-z]+)(?!:)

但是这个测试用例

example:

匹配
exampl

而不是失败。

4 个答案:

答案 0 :(得分:4)

如果你使用负向前瞻,你可以把它放在开头:

(?![a-z]*:)[a-z]+

即:“匹配至少一个a-z字符,除非以下字符为0到n'a-z'后跟':'”

这将支持更大的正则表达式:

 X(?![a-z]*:)[a-z]+Y

将匹配以下字符串:

 Xeee Xrrr:Y XzzzY XfffZ

只有'XzzzY'

答案 1 :(得分:0)

试试这个:

[a-z]\s

答案 2 :(得分:0)

([a-z]+\b)(?!:)

在比赛结束时断言一个单词边界,因此将失败“exampl”

答案 3 :(得分:0)

[A-Z] +(?![:A-Z])