Java 和 C# 正则表达式是否兼容?
这两种语言都声称使用Perl风格的正则表达式。如果我让一种语言测试正则表达式的有效性,它会在另一种语言中起作用吗?正则表达式语法有何不同?
这里的用例是一个 C# (.NET) UI 与最终的 Java 后端实现通信,该实现将使用正则表达式来匹配数据。
请注意,我只需要担心匹配,而不需要担心提取部分匹配数据。
这两种语言都声称使用Perl风格的正则表达式。如果我让一种语言测试正则表达式的有效性,它会在另一种语言中起作用吗?正则表达式语法有何不同?
这里的用例是一个 C# (.NET) UI 与最终的 Java 后端实现通信,该实现将使用正则表达式来匹配数据。
请注意,我只需要担心匹配,而不需要担心提取部分匹配数据。
有相当多的(很多)差异。
[abc-[cde]]
[abc&&[^cde]]
)[abc&&[cde]]
[abc-[^cde]]
)\p{Alpha}
POSIX 字符类COMMENTS
/IgnorePatternWhitespace
模式下,字符类中的空格 (U+0020) 很重要。(?x)
\p{L}
\pL
\p{L}
\p{IsL}
\p{general_category=L}
\p{gc=L}
\p{Lu}
\p{Lu}
\p{IsLu}
\p{general_category=Lu}
\p{gc=Lu}
\p{IsBasicLatin}
)\p{InBasicLatin}
\p{block=BasicLatin}
\p{blk=BasicLatin}
BasicLatin
Basic_Latin
Basic Latin
)
?+
、和(所有格量词)*+
++
{m,n}+
\Q...\E
转义元字符字符串\Q...\E
转义字符类元字符的字符串(以字符集为单位)(?(?=regex)then|else)
(?(regex)then|else)
(?(1)then|else)
(?(group)then|else)
(?<name>regex)
(?'name'regex)
\k<name>
\k'name'
(?<name>regex)
\k<name>
(?<name1-name2>regex)
(?'name1-name2'subexpression)
(?<=text)
(正面看)(?<!text)
(负面看)显式捕获
选项(?n)
(?#comment)
内联注释查看:http://www.regular-expressions.info/refflavors.html 该站点上有很多正则表达式信息,并且有一个很好的图表,详细介绍了java和.net之间的差异。