我试图创建一个正则表达式,它返回匹配组的相反结果。
举个例子可能会更好地解释它。
我的正则表达式是:
/(\{[\w\s-\\\/_=*%\'\"]+\})/gui
输入文本为:
{1}2{3}4{5}6{7}
现在它匹配如下:
所以我最终得到了{1}
,{3}
,{5}
,{7}
,但我需要有2
,4
,6
。我怎么能否认呢?我试过摆弄消极的前瞻性,但无法实现我想要的。
- 编辑:不幸的是,在我目前的情况下,我不能使用函数,我真的很想用一步正则表达式来解决这个问题,但我不确定是否可行。
3条答案
按热度按时间wtlkbnrh1#
我想这应该能行
/[^{](\d*)[^}]/g
你要找的就是那些被抓的火柴。
更新:
/(?!\{)(\d*)(?!\})/g
这不会捕获支架
https://regex101.com/r/oT9bY4/1
OP更新:
这个问题似乎没有一个明确的一步答案,因为它是不可能实现简单的正则表达式。有关详细信息,请参阅对此答案的评论。
ct3nt3jp2#
因为我不能评论喷气机我会这样做。
u在这里寻找{ then the group then }并且你希望找到} group {所以在括号中加上这样的组合
\}([\w\s-\\\/_=*%\'\"])+\{
测试这个正则表达式https://regex101.com/r/lQ9hC5/2。
xienkqul3#
从你的问题我可以说你需要捕捉
任何引导你的模式。
或
任何符合你的模式。
你的模式在哪里
所以我从上面的条件得到了这个正则表达式
这里是DEMO
请注意,我的正则表达式将捕获所有文本,除了你的模式,但你仍然需要根据现有的两个捕获组重新排列它们。