正则表达式-匹配除字符以外的任何字符

时间:2019-10-25 20:13:18

标签: regex

我的目标是匹配每个以__和__结尾的组。

例如,在此文本中:

__1__
__2____3__
__4_4__

我们可以找到4个组。

使用此正则表达式

__.[^__]*__ 

最后一组不匹配。

有了这个

__(?!(^_)$).*__ 

第二和第三组集合在一起。

请问如何解决?

1 个答案:

答案 0 :(得分:1)

您可以使用

__.+?__

您可能会感到惊讶,因为我在所有尝试中都尝试过类似的事情,因此我没有对“在此过程中没有任何下划线”提出任何意见。

诀窍是使用惰性量词+?。我允许正则表达式匹配任何字符(.),但要匹配尽可能少的时间,以便在其后有两个下划线。好像在匹配每个字符之后,正则表达式引擎总是询问“前面是否有两个下划线?”。如果有的话,那就是量词停止匹配的地方。

有关this的更多信息,请参见https://jsfiddle.net/e473t20d/