【问题标题】:Negate a regular expression in Java否定Java中的正则表达式
【发布时间】:2013-04-11 17:16:05
【问题描述】:

我需要一些帮助来为每个字符(除了前 10 个字符)找到匹配文本字符串的正则表达式。 例如,我使用了正则表达式:

.{10} 匹配文本的前 10 个字符

P53236TT0834691

P53236TT08 34691 --> 匹配

但我需要否定结果作为匹配(从 char 11 到 x ) 有人可以帮我正确表达吗?

【问题讨论】:

    标签: java regex


    【解决方案1】:

    使用回顾:

    (?<=^.{10}).*
    

    这将确保在匹配开始之前有 10 个字符,然后将匹配任何内容,直到字符串结束。

    【讨论】:

    • 作为旁注,我认为插入符号是不必要的,但反正也没那么重要......
    • 我包含它是因为它使意图更清晰,但是是的,这不是绝对必要的。
    • 不知道。我赞成反对它,因为我对其进行了分析并且它始终更快。
    【解决方案2】:

    在这种特定情况下,您可以使用:

    String pattern = ".{10}(.*)";
    

    第一个捕获组将捕获搜索字符串中 10 号之后的所有字符。您可以简单地扩展它以跳过任意数量的字符。

    【讨论】:

      【解决方案3】:

      您可以使用Groups 来匹配和提取您需要的内容,因此正则表达式将类似于:^.{10}(.*)$。这将抛出组中第 10 个字符之后的任何文本,您可以稍后访问,如 this 上一个 SO 问题所示。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-31
        • 2014-01-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多