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}
BasicLatinBasic_LatinBasic 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之间的差异。