我正在尝试创建一个正则表达式,它返回匹配组的反面。
可能一个例子会更好地解释它。
我的正则表达式是:
/(\{[\w\s-\\\/_=*%\'\"]+\})/gui
输入文字为:
{1}2{3}4{5}6{7}
现在匹配如下:
所以我最终得到{1}
,{3}
,{5}
,{7}
,但我需要2
,4
,{ {1}}。
我怎么能否定它呢?我试图摆弄负面预测,但无法实现我想要的目标。
编辑:不幸的是,我不能在目前的情况下使用函数,我真的想用一步式正则表达式来解决这个问题,但我不确定它是否可行。
答案 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
请注意,我的正则表达式会捕获除模式之外的所有文本,但您仍需要根据现有的两个捕获组重新排列它们。