正则表达式 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 匹配一个数字的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式

python正则表达式

Python正则表达式

python正则表达式

python正则表达式

python re 正则表达式