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

正则表达式问题-按id选择结果

  •  0
  • Bernd  · 技术社区  · 16 年前

    这里是我的正则表达式问题:如何选择具有特定ID的所有结果,例如“…ID=99”,但不包括使用附加数字(如ID=“990”或“ID=9923”)计数的结果。 但是,如果字符串使用另一个非数字字符(“&”)计数,e、 g.“…ID=99&参数=9290“也应包括在内。

    我完全搞不懂把它变成正则表达式的选择。我将非常感谢任何关于这方面的想法!

    4 回复  |  直到 16 年前
        1
  •  1
  •   Brian Carlton    16 年前

    使用\b,单词边界,即。

    ID=99\b

    Regular Expression Recipes: A Problem-Solution Approach 这是个好主意。

        2
  •  1
  •   Dave Mateer    16 年前

    回答问题的第二部分:

    就书籍而言,, Regular Expression Cookbook 奥莱利的作品太棒了。前几章几乎涵盖了所有的基础知识,然后是一些。书的其余部分是具体的例子。

        3
  •  1
  •   Alan Moore Chris Ballance    16 年前
    ID=99(?!\d)
    

    (?!\d) negative lookahead ; 它声称 任何一个 下一个字符不是数字 或 没有下一个角色。您没有说您使用的是什么regex风格,但是大多数所谓的Perl兼容风格都支持lookaheads。

    关于学习资源,教程位于 regular-expressions.info 这是一个很好的起点。对于进阶学习,其他人推荐的Goyvaerts-Levithan书非常优秀,但是 Mastering Regular Expressions

    编辑:为了安全起见,您可能需要使用 \bID=99(?!\d) 为了避免匹配像 FOO_ID=99

        4
  •  0
  •   codaddict    16 年前

    ID=99(:?\D)?
    

    如果99只是一个示例,并且您希望匹配任意两个数字,则可以使用:

    ID=\d{2}(:?\D)?