Java和.Net正则表达式

时间:2010-09-24 07:37:19

标签: java vb.net regex

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

我正在尝试转换我的.Net Framework但模式无效

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

e.g。我们如何命名java等中的分组结构

2 个答案:

答案 0 :(得分:2)

有很多不同之处summarised here

最重要的是:

  1. 在Java字符串中,您需要转义所有反斜杠(@"\s"变为"\\s"
  2. Java不支持命名捕获组
  3. Java不支持lookbehinds中的无限重复。
  4. Java不支持条件((?(?=regex)then|else)
  5. Unicode属性的命名方式不同。
  6. 其他大多数差异都很小。上面没有提到的一个区别是Java缺乏对平衡(递归)正则表达式的支持,我希望你不必使用它。

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

答案 1 :(得分:1)

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

快速示例:

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

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

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