反向组匹配的正则表达式

时间:2016-03-03 14:14:04

标签: regex

我正在尝试创建一个正则表达式,它返回匹配组的反面。

可能一个例子会更好地解释它。

我的正则表达式是:

/(\{[\w\s-\\\/_=*%\'\"]+\})/gui

输入文字为:

{1}2{3}4{5}6{7}

现在匹配如下:

Matched groups

所以我最终得到{1}{3}{5}{7},但我需要24,{ {1}}。 我怎么能否定它呢?我试图摆弄负面预测,但无法实现我想要的目标。

编辑:不幸的是,我不能在目前的情况下使用函数,我真的想用一步式正则表达式来解决这个问题,但我不确定它是否可行。

3 个答案:

答案 0 :(得分:0)

我认为这应该有用

/[^{](\d*)[^}]/g

捕获的匹配是您所追求的。见http://refiddle.com/refiddles/56d84a4875622d5b7a3c3400

更新

/(?!\{)(\d*)(?!\})/g

这不会捕捉大括号

https://regex101.com/r/oT9bY4/1

OP更新:

似乎这个问题没有明确的一步回答,因为无法简单地使用正则表达式实现。有关详细信息,请参阅此答案的评论。

答案 1 :(得分:0)

因为我不能评论Jet我这样做 你在那里寻找一个{然后是小组然后}并且你希望找到}小组{所以有机会围绕并使这个小组成为这样的组  \}([\w\s-\\\/_=*%\'\"])+\{在这里查看此正则表达式的测试https://regex101.com/r/lQ9hC5/2

答案 2 :(得分:0)

从你的问题我可以说你需要捕获

  

任何引领你模式的模式。

  

遵循您的模式的任何模式。

您的模式

(\{[\w\s-\\\/_=*%\'\"]+\})

所以我从上述条件得到了这个正则表达式

\{[\w\s-\\\/_=*%\'\"]+\}(.+?)|(.+?)\{[\w\s-\\\/_=*%\'\"]+\}

从字面上看,这里是DEMO

请注意,我的正则表达式会捕获除模式之外的所有文本,但您仍需要根据现有的两个捕获组重新排列它们。