regex 用于反向组匹配的正则表达式

s3fp2yjn  于 2023-05-08  发布在  其他
关注(0)|答案(3)|浏览(174)

我试图创建一个正则表达式,它返回匹配组的相反结果。
举个例子可能会更好地解释它。
我的正则表达式是:

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

输入文本为:

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

现在它匹配如下:

所以我最终得到了{1}{3}{5}{7},但我需要有246。我怎么能否认呢?我试过摆弄消极的前瞻性,但无法实现我想要的。

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

wtlkbnrh1#

我想这应该能行
/[^{](\d*)[^}]/g
你要找的就是那些被抓的火柴。
更新:
/(?!\{)(\d*)(?!\})/g
这不会捕获支架
https://regex101.com/r/oT9bY4/1

OP更新:

这个问题似乎没有一个明确的一步答案,因为它是不可能实现简单的正则表达式。有关详细信息,请参阅对此答案的评论。

ct3nt3jp

ct3nt3jp2#

因为我不能评论喷气机我会这样做。
u在这里寻找{ then the group then }并且你希望找到} group {所以在括号中加上这样的组合
\}([\w\s-\\\/_=*%\'\"])+\{
测试这个正则表达式https://regex101.com/r/lQ9hC5/2

xienkqul

xienkqul3#

从你的问题我可以说你需要捕捉
任何引导你的模式。

任何符合你的模式。
你的模式在哪里

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

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

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

这里是DEMO
请注意,我的正则表达式将捕获所有文本,除了你的模式,但你仍然需要根据现有的两个捕获组重新排列它们。

相关问题