Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式匹配不被空格包围_Java_Regex_Regex Negation_Regex Lookarounds - Fatal编程技术网

Java 正则表达式匹配不被空格包围

Java 正则表达式匹配不被空格包围,java,regex,regex-negation,regex-lookarounds,Java,Regex,Regex Negation,Regex Lookarounds,背景:为了好玩,我正在构建一个解释器,需要实现一个空白规则 规则是正则表达式在不被空格包围时必须匹配加号“+”。 以下是示例文本: 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

背景:为了好玩,我正在构建一个解释器,需要实现一个空白规则

规则是正则表达式在不被空格包围时必须匹配加号“+”。 以下是示例文本:

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\(\)]+但是我想让我的代码足够灵活,可以添加更多的标记,而不用担心类似的事情。因为规则是没有空格环绕,所以我想这样做。是的,这就是我想要的。谢谢。我没有意识到(尽管这是有意义的)负面评价的位置很重要。编辑:如果可以,请根据评论中的答案编辑您的答案,以反映我的问题。