gpt4 book ai didi

java - 这两种语法\\d\\d\\d 和\\d{3} 在所有环境中都一样吗?

转载 作者:行者123 更新时间:2023-11-30 11:24:35 27 4
gpt4 key购买 nike

想问一下这两个正则表达式有区别吗?

\d\d\d\d{3}

我已经在我的本地机器上使用 Java 和 Windows 操作系统对此进行了测试,两者都工作正常并且结果相同。但是,当在 linux 环境中运行时,\d\d\d 可以正常工作,而 \d{3} 则不能。环境是这里的一个因素吗?或者还有什么因素可以使这两个表达式的结果不同?

这是代码片段:

Pattern pattern = Pattern.compile( ".*aaa\\.bbb\\d{3}.ccc\\d{3}." );
Matcher matcher = pattern.matcher( "aaa.bbb033.ccc342.ffff" );
matcher.find();

使用 \d\d\d, matcher.find() = true

使用 \d{3},matcher.find() = false

最佳答案

不,有不同的正则表达式方言。[1] grep 甚至知道不止一种。

grep    'abc|def'     # Matches abc|def
grep 'abc\|def' # Matches abc or def
grep -P 'abc|def' # Matches abc or def
grep -P 'abc\|def' # Matches abc|def

旧的 grep(没有 -P-E)根本无法识别 a{m}。或者 \d

$ cat foo
123
1{3}
\d{3}
\d\d\d

$ grep '\d{3}' foo
\d{3}

$ grep '\\d\\d\\d' foo
\d\d\d

$ grep '\d\d\d' foo
ddd

尽管它在“Perl”模式下(以及在某些版本中的“扩展”模式下)

$ grep - P '\d{3}' foo
123

$ grep -P '\d\d\d' foo
123

也就是说,我希望给定版本的 Java 的所有实现都能理解相同的正则表达式语言。


  1. 事实上,一些语言的正则表达式在技术上并不是original definition 的正则表达式。因为它们可以匹配超过 regular languages .

关于java - 这两种语法\\d\\d\\d 和\\d{3} 在所有环境中都一样吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20625605/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com