REGEX - 找到一个匹配相同的字符串?

时间:2018-04-08 08:53:33

标签: regex

我正在尝试匹配字符串“menu-item”,但后面有一个数字。

<li id="menu-item-578" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-578">

我可以使用这个正则表达式

menu-item-[0-9]*

然而它匹配所有菜单项字符串,我想只匹配"menu-item-578"但不匹配id="menu-item-578" enter image description here

我该怎么做?

谢谢

3 个答案:

答案 0 :(得分:1)

你应该避免使用menu-item-[0-9]*,因为它与多余的预期子字符串匹配,但是因为它超出了menu-item-中与menu-item-one的匹配。

除了用+替换量词之外,你必须查看前面的字符是不是非空白字符:

(?<!\S)menu-item-[0-9]+(?=["' ])

或者如果你的正则表达式味道不支持外观你可能想要这样做可能不准确:

[ ]menu-item-[0-9]+

您还可以考虑使用更严格的模式跟随字符:

[ ]menu-item-[0-9]+["' ]

答案 1 :(得分:0)

之前使用空格,如下所示:

\ menu-item-[0-9]*

第一次发生之前有一个",而第二次有一个空格。

编辑:使用在线正则表达式编辑器(如Regex tester)来试试这个。

答案 2 :(得分:0)

尝试也可以:

(\s)(menu-item-)\d+

https://regex101.com/

  • \s任何空格字符