相同的正则表达式但在不同的计算机

时间:2015-11-03 16:33:28

标签: regex intellij-idea

我和我的一个同事使用相同的正则表达式,但我们获得了不同的结果,我们目前无能为力......正则表达式是为了找到任何以(字节)开头的东西,而不是(或)的任何东西跟着一个+号。我获得了好成绩但不是他。 我们都使用IntelliJ 14.1.14并在IntelliJ搜索引擎中使用正则表达式。 任何人都有经验并解决它?

正则表达式:

\(byte\)[^()]*\+

数据:

(byte)'a' + 1;
(byte)'-';

我的结果:

(byte)'a' +

他的结果:

(byte)'-';

1 个答案:

答案 0 :(得分:1)

IntelliJ支持多种SDK。例如,在付费版本中,除了Java之外,您还可以使用Python插件(复制他们的PyCharm产品)。 regular expression engine会因SDK being used而异。

但是,如sln所示,您的表达式\(byte\)[^()]*\+将永远不会匹配文本(byte)'-';(无论使用何种引擎),因为正则表达式要求匹配的行以{{1}结尾符号,与他的结果不同。

因此,我认为他的表情有误;它不是IntelliJ的问题,甚至不是引擎的差异。您可能希望使用regex101网站进一步试验。

他可能没有自己的错误,并且文件编码的差异导致了这一点(尽管我不知道特定的不匹配会是什么。)尝试确保你是using the same encoding,UTF-8是一个很好的默认值。