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

如何让这个正则表达式工作?

  •  3
  • gurehbgui  · 技术社区  · 14 年前

    我有一个小问题,我想在里面找

    <tr><td>3</td><td>foo</td><td>2</td>

    foo,我用:

    $<tr><td>\d</td><td>(.*)</td>$

    找到foo,但它不起作用,因为它与 </td> 在foo的结尾但是 </td> 在弦的末端

    3 回复  |  直到 12 年前
        1
  •  2
  •   NullUserException Mark Roddy    14 年前

    你必须做出决定 .* 懒惰而不是贪婪。阅读更多关于懒惰与贪婪的文章 here .
    你的最后一根弦锚定了( $

    <tr><td>\d<\/td><td>(.*?)<\/td>
    

    (如图所示) rubular .)

    注意:我不主张使用regex来解析HTML。但有时手头上的任务非常简单,可以由regex来处理,对于regex来说,一个成熟的XML解析器就太过了(例如:this question)。知道如何为工作选择合适的工具是编程中的一项重要技能。

        2
  •  0
  •   dash-tom-bang    14 年前

    你的领导 $ 应该是一个 ^

    如果不想一直匹配到字符串的末尾,请不要使用 $ 最后。然而,自从 * (.*) ([^<]*) .

        3
  •  0
  •   Senseful    14 年前

    ^<tr><td>\d</td><td>(.*?)</td>
    

    (插入关于不使用regex解析xml的强制性注释)