Regex 逆群匹配的正则表达式

Regex 逆群匹配的正则表达式,regex,Regex,我试图创建一个正则表达式,它返回匹配组的相反值 也许一个例子可以更好地解释这一点 我的正则表达式是: /(\{[\w\s-\\\/_=*%\'\"]+\})/gui 输入文本为: {1}2{3}4{5}6{7} 现在它是这样匹配的: 所以我最终得到了{1},{3},{5},{7},但我需要2,4,6。 我怎么能否定它呢?我尝试过摆弄负面形象,但没能达到我想要的 编辑:不幸的是,在我目前的情况下,我不能使用函数,我真的很想用一步正则表达式来解决这个问题,但我不确定这是否可行。我认为这应该行得

我试图创建一个正则表达式,它返回匹配组的相反值

也许一个例子可以更好地解释这一点

我的正则表达式是:

/(\{[\w\s-\\\/_=*%\'\"]+\})/gui
输入文本为:

{1}2{3}4{5}6{7}
现在它是这样匹配的:

所以我最终得到了
{1}
{3}
{5}
{7}
,但我需要
2
4
6
。 我怎么能否定它呢?我尝试过摆弄负面形象,但没能达到我想要的


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

我认为这应该行得通

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

捕捉到的比赛就是你要找的。看

更新:

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

这不会抓住大括号

由OP更新:


这个问题似乎没有明确的一步回答,因为仅仅使用正则表达式是不可能的。有关更多信息,请参阅对此答案的评论。

因为我不能评论jet,所以我会这样做。
你在哪里寻找一个{然后是群}你希望找到}群{所以把括号放在一起,把群放在里面,像这样

\}([\w\s-\\/\*%\'\“])+\{

请参见此处的正则表达式测试。

从您的问题中,我可以说您需要捕获

任何引导您的模式的模式

任何遵循您的模式的模式

你的模式在哪里

(\{[\w\s-\\\/_=*%\'\"]+\})
所以我从上面的条件得到了这个正则表达式

\{[\w\s-\\\/_=*%\'\"]+\}(.+?)|(.+?)\{[\w\s-\\\/_=*%\'\"]+\}
从字面上说,这是


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

因此,使用此模式进行拆分。
(?:\{([\w\s-\\\\/\\=*%\'\”])+\}
@WiktorStribiżew谢谢,但如果可能的话,我只想用正则表达式来解决这个问题。不过这是个好主意。@Tim007看起来也一样;我试过了。正则表达式的味道是什么?PCRE?我看到了
/u
修饰符。谢谢,但它也匹配花括号。这就是为什么我说它是捕获的东西(在括号中)我会编辑它,如果你需要的话,它甚至不匹配大括号。那太棒了,否则它就不能回答问题。谢谢你!没有代码就不能省略第一个
{
。这对奇数组大括号有效吗?如果你看他的机器,你会发现它是2 4和6,而不是{1}{3}{5} {7}对于奇数个组,请使用此版本的\}([\w\s-\\\\/\*%\'\“])+\{?这样您就不需要最后一个{了问题的第一句话说明我正在尝试匹配匹配组的倒数。您的解决方案不仅会匹配大括号,而且不会与
{1}2{3}4{5}这样的输入一起工作6
。如果使用regex.Matches,则会得到加工零件(在()中的零件)的列表,这不会给您括号