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

Regex 正则表达式问题-按id选择结果,regex,Regex,这里是我的正则表达式问题:如何选择具有特定ID的所有结果,例如“…ID=99”,但不包括使用附加数字(如ID=“990”或“ID=9923”)计数的结果。 但是,如果字符串使用另一个非数字字符(&)进行计数,例如“…ID=99&PARAM=9290”,则也应包括该字符串 我完全搞不懂把它变成正则表达式的选择。我将非常感谢任何关于这方面的想法 (顺便问一下,如果你真的很喜欢正则表达式,你是怎么学的?有推荐的资源、书籍、教程吗?) 注意:我用它在谷歌分析中过滤我的搜索结果,因为你实际上可以在“过滤页

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

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

(顺便问一下,如果你真的很喜欢正则表达式,你是怎么学的?有推荐的资源、书籍、教程吗?)


注意:我用它在谷歌分析中过滤我的搜索结果,因为你实际上可以在“过滤页面”表单中使用正则表达式。也许这是对您有用的信息。

使用\b,单词边界,即

ID=99\b


因为书是一本好的书。

使用\b,单词边界,即

ID=99\b


对于书籍来说,这是一个好问题。

回答问题的第二部分:


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

回答问题的第二部分:


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

这将匹配ID=99和ID=99,后跟一个非数字字符

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

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

这将匹配ID=99和ID=99,后跟一个非数字字符

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

ID=\d{2}(:?\D)?
(?!\d)
是一个;它断言下一个字符不是数字没有下一个字符。您没有说您使用的是什么regex风格,但是大多数所谓的Perl兼容风格都支持lookaheads

至于学习资源,在的教程是一个很好的开始。对于进阶学习,其他人推荐的Goyvaerts Levithan书非常优秀,但仍然是最好的。如果你负担得起的话,两样都买;你不会后悔的

编辑:为了安全起见,您可能希望使用
\bID=99(?!\d)
来避免匹配类似
FOO\u ID=99的内容

(?!\d)
是一个;它断言下一个字符不是数字没有下一个字符。您没有说您使用的是什么regex风格,但是大多数所谓的Perl兼容风格都支持lookaheads

至于学习资源,在的教程是一个很好的开始。对于进阶学习,其他人推荐的Goyvaerts Levithan书非常优秀,但仍然是最好的。如果你负担得起的话,两样都买;你不会后悔的


编辑:为了安全起见,您可能希望使用
\bID=99(?!\d)
来避免匹配类似
FOO\u ID=99

的内容,我们是在谈论URL参数吗?@Dave:只要“ID=99”后面没有其他数字,您会使用什么字符串函数来匹配它?在我看来,这是雷格克斯的工作。@Alan:你说得对;我没有想清楚。谢谢你的更正。删除无用的评论…我们是在谈论URL参数吗?@Dave:只要后面没有其他数字,你会使用什么字符串函数来匹配“ID=99”?在我看来,这是雷格克斯的工作。@Alan:你说得对;我没有想清楚。谢谢你的更正。删除无用的注释…将无法工作,即使您修复了语法
(?:\D)?
可以选择匹配非数字,但如果下一个字符是数字(这是OP想要的),则不会阻止匹配。即使修复了语法,也不会起作用
(?:\D)?
可以选择匹配非数字,但如果下一个字符是数字(这是OP想要的),则不会阻止匹配。