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

在Java中提取不区分大小写子字符串的正则表达式

  •  1
  • user1631306  · 技术社区  · 6 年前

    - 介于两者之间,但它们都会在没有任何空间的情况下发生。

    以下是一些赠款的例子:

    • W9124A-18-0001
    • 007-FY2018
    • W81XWH18PRMRPTTDA
    • 07-544

    现在我甚至不确定一个段落是否会得到批准,所以我现在依赖这个词 grant


    例子 :

    This research was supported by NIH/NHLBI Grant W9124A-18-0001(PI, Michael Brown)
    

    我试着用下面的正则表达式

    (?i)grant [A-Z0-9-]*
    

    Grant w9124A-18-0001 当它不应该(小写 w

    3 回复  |  直到 6 年前
        1
  •  5
  •   Paolo    6 年前

    可以使用表达式:

    (?i)(?<=Grant\s)(?-i)[A-Z0-9-]+\b
    
    • (?i)
    • (?<=Grant\s) 积极寻找 Grant
    • [A-Z0-9-]+ 匹配数字、字母字符和破折号 - .
    • (?-i)
    • \b 单词边界。

    你可以现场试试 here .

    (?i)(?<=Grant\s)(?c)[A-Z0-9-]+\b
    

    only supported by Tcl .

        2
  •  3
  •   JGNI    6 年前

    你需要在格兰特之后关闭病例不敏感。

    (?i)grant (?-i)[A-Z0-9-]*
    
        3
  •  0
  •   Makoto    6 年前

    那个 ,也可以。

    [Gg]rant [A-Za-z0-9\-]+
    

    更奇特的匹配-例如特定子组与grant ID中去掉连字符部分的匹配-留给读者作为练习。