正则表达式预见组的一部分

时间:2018-12-05 09:02:47

标签: regex powershell regex-lookarounds regex-group

我在Powershell 5.1中使用正则表达式。

我需要它来检测数字组,但是忽略/后面或前面有/的组,因此从此仅应检测9876。

[regex]::matches('9876 1234/56',‘(?<!/)([0-9]{1,}(?!(\/[0-9])))’).value

现在,结果是:

9876

123

6

更多示例:“ 13 17 10/20”只能匹配13和17。

尝试使用类似(?!(\/([0-9]{1,})))的方法,但没有帮助。

1 个答案:

答案 0 :(得分:3)

您可以使用

\b(?<!/)[0-9]+\b(?!/[0-9])

请参见regex demo

或者,如果数字可以粘贴到文本上

(?<![/0-9])[0-9]+(?!/?[0-9])

请参见this regex demo

第一个模式基于单词边界\b,以确保在预期匹配前后没有字母,数字和_。第二个只是确保比赛两端没有数字和/

详细信息

  • (?<![/0-9])-向后查找,以确保当前位置的左侧没有数字或/
  • [0-9]+-一个或多个digis
  • (?!/?[0-9])-前瞻,确保没有可选的/,其后紧跟当前位置右侧的数字。