繁体   English   中英

Java和.Net正则表达式

[英]Java and .Net Regular Expressions

Java和.Net Framework正则表达式模式之间的区别

我试图转换我的.Net Framework但模式无效

任何人都可以指出正则表达式模式的主要差异

例如,我们如何命名java中的分组结构等。

这里总结了许多不同之

最重要的是:

  1. 在Java字符串中,您需要转义所有反斜杠( @"\\s"变为"\\\\s"
  2. Java不支持命名捕获组
  3. Java不支持lookbehinds中的无限重复。
  4. Java不支持条件( (?(?=regex)then|else)
  5. Unicode属性的命名方式不同。

大多数其他差异很小。 上面没有提到的一个区别是Java缺乏对平衡(递归)正则表达式的支持,我希望你不必使用它。

如果您需要转换许多复杂的正则表达式,请考虑投资RegexBuddy ,它将为您做到这一点。

......还有一个实用信息。 我不确定“Java不支持lookbehinds中的无限重复”是什么意思,但AFAIK和我现在测试的内容,.NET在子串(某处)寻找匹配,但Java需要适应来自原点的模式源字符串。

快速举例:

任务:是文件名word文件? (示例demo.docx)

.NET解决方案: \\.docx$ (这将在“demo.docx”上成功,因为模式位于文件名的某处

Java解决方案: .*\\.docx$ (您需要指定前缀.*以确保模式可以从文件中的任何位置开始..NET模式在Java实现中不起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM