【发布时间】:2012-02-20 06:22:43
【问题描述】:
我正在尝试在正则表达式中使用lookbehinds,但它似乎没有像我预期的那样工作。所以,这不是我真正的用法,但为了简化我会举一个例子。想象一下,我想在“这是一个示例”的字符串上匹配“示例”。所以,根据我对lookbehinds的理解,这应该可行:
(?<=this\sis\san\s*?)example
这应该做的是找到“this is an”,然后是空格字符,最后匹配单词“example”。现在,它不起作用,我不明白为什么,不可能在lookbehinds中使用'+'或'*'?
我也尝试了这两个,它们可以正常工作,但不能满足我的需求:
(?<=this\sis\san\s)example
this\sis\san\s*?example
我正在使用这个网站来测试我的正则表达式:http://gskinner.com/RegExr/
【问题讨论】:
-
这需要一个标签来标识您使用它们的语言或环境。 .NET 的正则表达式可以毫无问题地处理这个问题。
-
注意!如果你的正则表达式能像你想要的那样工作,它也将匹配
example:this is anexample。所以如果你不想这样,你应该删除? -
micha:他们可能应该只是将 * 更改为
+。删除?在这方面没有任何影响。但实际上,*?作为量词在这种情况下是无用且不必要的,因为在那之后没有更多的空格可以匹配,所以\s*?等同于\s*。
标签: regex lookbehind