正则表达式匹配不被空格包围
Regex match NOT surrounded by white spaces
上下文:我正在构建一个有趣的解释器,需要实施一个白色 space 规则。
规则是当正则表达式不被 space 包围时,必须匹配加号“+”。
这是一个示例文本:
a+b c +d g+ h i + j x+y
a 和 b 之间的加号应该与 x 和 y 之间的加号匹配。我是正则表达式的新手;但是,我尝试了以下正则表达式:
\+(?<!\s)(?!\s)
这对我来说意味着,
\+ find all "+" matches
(?<!\s) (neg look behind) that don't have spaces behind
(?!\s) (neg look ahead) that don't have spaces ahead
然而,当我在 regex101 上 运行 时,我只能匹配 a 和 b 之间的第一个加号。
我不确定我在这里做错了什么。不胜感激。
您可以简单地使用 \[a-zA-Z\]\+\[a-zA-Z\]
或者如果 + 周围有更多字符则使用
[a-zA-Z]+\+[a-zA-Z]+
更新:您可以使用 (?<!\s)[+)-](?!\s)
通过在后瞻和先行条件之间移动匹配符号
上下文:我正在构建一个有趣的解释器,需要实施一个白色 space 规则。
规则是当正则表达式不被 space 包围时,必须匹配加号“+”。 这是一个示例文本:
a+b c +d g+ h i + j x+y
a 和 b 之间的加号应该与 x 和 y 之间的加号匹配。我是正则表达式的新手;但是,我尝试了以下正则表达式:
\+(?<!\s)(?!\s)
这对我来说意味着,
\+ find all "+" matches
(?<!\s) (neg look behind) that don't have spaces behind
(?!\s) (neg look ahead) that don't have spaces ahead
然而,当我在 regex101 上 运行 时,我只能匹配 a 和 b 之间的第一个加号。
我不确定我在这里做错了什么。不胜感激。
您可以简单地使用 \[a-zA-Z\]\+\[a-zA-Z\]
或者如果 + 周围有更多字符则使用
[a-zA-Z]+\+[a-zA-Z]+
更新:您可以使用 (?<!\s)[+)-](?!\s)
通过在后瞻和先行条件之间移动匹配符号