正则表达式 href 匹配一个数字
Posted
技术标签:
【中文标题】正则表达式 href 匹配一个数字【英文标题】:Regex href match a number 【发布时间】:2011-05-25 00:16:57 【问题描述】:好吧,我又回到了正则表达式,但我对它的理解很差。花更多时间学习它,这就是我想出的:
/<a href=\"travis.php?theTaco=([0-9999999])\">(.*)</a>
我基本上想要这个字符串中的数字:
<a href="travis.php?theTaco=510973">510973</a>
我的正则表达式几乎是好的?我原来是:
"/<a href=\"travis.php?theTaco(.*)\">(.*)<\/a>/";
但有时它会返回给我巨大的字符串。所以,我只想得到数字。 我搜索了其他帖子,但有大量不相关的材料,请提供示例、资源或指向非常相关问题的链接。
谢谢。
【问题讨论】:
【参考方案1】:尝试使用您正在使用的语言提供的 html 解析器。
第一个正则表达式失败的原因:
[0-9999999]
不是你想的那样。它与匹配一位数字的[0-9]
相同。要匹配号码,您需要[0-9]+
。 .*
也很贪心,会尽可能多地匹配。您可以使用.*?
使其不贪婪。由于您要再次匹配一个数字,请再次使用[0-9]+
而不是.*
。此外,如果您捕获的两个数字相同,您可以匹配第一个并使用反向引用 \1
作为第二个。
还有一些您需要转义的正则表达式元字符,例如.
、?
。
试试:
<a href=\"travis\.php\?theTaco=([0-9]+)\">\1<\/a>
【讨论】:
【参考方案2】:要捕获一个数字,您不要使用 [0-99999] 之类的范围,而是按数字捕获。像 [0-9]+ 这样的东西更像是你想要的那个部分。另外,就像 codaddict 所说的,逃避很重要。
【讨论】:
【参考方案3】:其他人已经提到了一些关于你的正则表达式的问题,所以我不会重复它们。
还有一些关于你如何指定你想要的东西的问题。您可以简单地通过匹配
/theTaco=(\d+)/
并采取第一个捕获组。您没有向我们提供足够的信息来了解这是否适合您的需求。
【讨论】:
以上是关于正则表达式 href 匹配一个数字的主要内容,如果未能解决你的问题,请参考以下文章