如何只匹配那些前面有偶数个“%”的数字?

2024-04-13

我想捕获字符串中任何位置出现的数字,并将其替换为“(.+)”。

但我只想捕获那些具有偶数个的数字%在他们前面。不用担心周围的字符是否被捕获:我们可以使用捕获组来过滤掉数字。

我无法想出 ECMAscript 正则表达式。

这是操场:

abcd %1 %%2 %%%3 %%%%4 efgh

abcd%12%%34%%%666%%%%11efgh

A successful catch will behave like this:
desired behaviour


我尝试过的事情:


如果你已经意识到,第三次尝试就快成功了。唯一的问题是在游乐场的第二行。 其实我想表达的意思是:

如果数字前面有偶数个则匹配该数字%s AND 以下任一条件为真:

  • 上面的整个表达式前面是nothing[缺乏(未消耗或其他)特征]。
  • 上面的整个表达式前面有一个除%.

有没有办法匹配absence一个角色的?
这就是我试图使用的方法\0在第三次尝试中。


您可以使用(?:[^%\d]|^|\b(?=%))(?:%%)*(\d+)作为一种模式,您的号码将存储到第一个捕获组中。这也处理前面带有零%字符的数字。

这将匹配偶数个 % 符号,如果它们前面有:

  • 既不是 % 也不是数字(所以我们不需要捕获 % 之前的最后一个数字,因为这不适用于像这样的链%%1%%2)
  • 字符串的开头
  • 对于上面提到的链,单词边界(因此任何单词字符)

你可以看到它的实际效果here https://regex101.com/r/wG6uR1/2

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何只匹配那些前面有偶数个“%”的数字? 的相关文章

随机推荐