已接受组的Regex前瞻性部分



我在powershell 5.1中使用regex。

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

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

现在的结果是:

9876

123

6

更多示例:"13 17 10/20"应该只匹配13和17。

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

您可以使用

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

查看regex演示

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

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

请参阅此regex演示。

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

详细信息

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

最新更新