接受正则表达式组的前瞻部分

标签 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,}))) 的内容,但没有帮助。

最佳答案

您可以使用

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

请参阅regex demo

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

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

参见this regex demo .

第一个模式基于字边界 \b确保没有字母、数字和 _就在预期比赛之前和之后。第二个只是确保没有数字和 /在比赛的两端。

详细信息

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

关于接受正则表达式组的前瞻部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53628568/

相关文章:

php - 有效地分解和修剪长字符串,从而产生单个数组

Powershell - 使用特殊字符对字符串对象进行排序

powershell - 您必须在 '-' 运算符之后提供值表达式

javascript - 在 Javascript 中通过匹配替换

regex - 为什么不匹配不同于文件和变量的正则表达式?

regex - sed 来自常量正则表达式

Javascript 正则表达式 -\\d 有效,但无效\d

powershell - 为 PowerShell 命令设置新的默认值

python - 模式的惰性匹配

正则表达式删除数字和单词字符串中的最后两个字母