我在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,})))
的方法,但没有帮助。
答案 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])
-前瞻,确保没有可选的/
,其后紧跟当前位置右侧的数字。