代码之家  ›  专栏  ›  技术社区  ›  Rajeev

Java和.Net正则表达式

  •  3
  • Rajeev  · 技术社区  · 16 年前

    Java&Net Framework正则表达式模式之间的差异

    有人能指出正则表达式模式的主要区别吗

    2 回复  |  直到 16 年前
        1
  •  2
  •   Tim Pietzcker    16 年前

    这里有很多不同之处 summarised here .

    最重要的是:

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

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

    RegexBuddy

        2
  •  1
  •   Engin    14 年前

    ... 还有一个实用信息。我不知道“Java不支持lookbehinds内部的无限重复”这一点意味着什么,但是AFAIK和我现在测试的内容,.NET在子字符串(某处)中查找匹配,但是Java需要从源字符串的起始处匹配模式。

    任务:

    \.docx$ (这将在上成功)演示.docx,因为在文件名的某个地方找到了模式

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