【发布时间】:2014-08-10 07:12:31
【问题描述】:
我想匹配如下字符串:
45 meters?
45, meters?
45?
45 ?
但不是这样的字符串:
45 meters you?
45 you ?
45, and you?
在这两种情况下,问号都必须在末尾。所以,基本上我想排除所有那些包含“你”这个词的字符串。
我尝试了以下正则表达式:
'\d+.*(?!you)\?$'
但它匹配第二种情况(可能是因为.*)
【问题讨论】:
-
you可以出现在字符串的任何位置,还是只出现在末尾? -
它可能在任何地方,但现在我很感兴趣,当它出现在最后时,谢谢。
-
我的意思是“任何地方”,在
you和?之间可能会有一些空格。 -
你可以试试
\d+.*?(?<!you\?)$,但它也会匹配45 you ?。你不能这样做(?<!you\s*\?)因为lookbehinds(在大多数情况下)需要是固定长度的。 -
正则表达式是强制性的吗?你可以这样:
"you" in mystring