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

从两个OR字的第一个开始的有效RegEx匹配,如果我在其前面放置更多RegEx,则会使用不需要的最后一个OR字[重复]

  •  0
  • questionto42  · 技术社区  · 2 年前

    我的正则表达式模式看起来像

    <xxxx location="file path/level1/level2" xxxx some="xxx">
    

    我只对分配给位置的报价中的部分感兴趣。如果没有贪婪的开关,它不应该像下面这样简单吗?

    /.*location="(.*)".*/
    

    似乎不起作用。

    0 回复  |  直到 13 年前
        1
  •  0
  •   RARE Kpop Manifesto    2 年前

    您需要使正则表达式惰性/非贪婪,因为默认情况下, "(.*)" 将匹配所有 "file path/level1/level2" xxx some="xxx" .

    相反,你可以使你的点星不贪婪,这将使它匹配尽可能少的字符:

    /location="(.*?)"/
    

    添加 ? 关于一个量词( ? , * 或 + )使其不贪婪。

    注意:这只在实现Perl5扩展(Java、Ruby、Python等)的正则表达式引擎中可用,但在“传统”正则表达式引擎(包括Awk, sed , grep 没有 -P 等