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,则会得到加工零件(在()中的零件)的列表,这不会给您括号