我的目标是匹配每个以__和__结尾的组。
例如,在此文本中:
__1__
__2____3__
__4_4__
我们可以找到4个组。
使用此正则表达式
__.[^__]*__
最后一组不匹配。
有了这个
__(?!(^_)$).*__
第二和第三组集合在一起。
请问如何解决?
答案 0 :(得分:1)
您可以使用
__.+?__
您可能会感到惊讶,因为我在所有尝试中都尝试过类似的事情,因此我没有对“在此过程中没有任何下划线”提出任何意见。
诀窍是使用惰性量词+?
。我允许正则表达式匹配任何字符(.
),但要匹配尽可能少的时间,以便在其后有两个下划线。好像在匹配每个字符之后,正则表达式引擎总是询问“前面是否有两个下划线?”。如果有的话,那就是量词停止匹配的地方。
有关this的更多信息,请参见https://jsfiddle.net/e473t20d/。