正则表达式href匹配一个数字

时间:2010-12-14 00:51:53

标签: regex url tags href

好吧,在这里,我回到正则表达式,我对它的理解不足。花了更多时间学习它,这就是我提出的:

/<a href=\"travis.php?theTaco=([0-9999999])\">(.*)</a>

我基本上想要这个字符串中的数字:

<a href="travis.php?theTaco=510973">510973</a>

我的正则表达式几乎是好的?我原来是:

"/<a href=\"travis.php?theTaco(.*)\">(.*)<\/a>/";

但有时候它给了我很大的回报。所以,我只想获得数字。 我搜索过其他帖子,但是有大量不相关的内容,请举例说明,资源或链接指向一个非常相关的问题。

谢谢。

3 个答案:

答案 0 :(得分:4)

尝试使用您正在使用的语言提供的HTML解析器。

您的第一个正则表达式失败的原因:

[0-9999999]不是你的想法。它与匹配一位数的[0-9]相同。要匹配您需要的号码[0-9]+。同样.*是贪婪的,并会尝试尽可能多地匹配。您可以使用.*?使其变得非贪婪。由于您尝试再次匹配某个号码,请再次使用[0-9]+而不是.*。此外,如果您捕获的两个数字相同,则可以匹配第一个,并使用后引用\1作为第二个。

并且有一些正则表达式元字符需要像.?一样转义。

尝试:

<a href=\"travis\.php\?theTaco=([0-9]+)\">\1<\/a>

答案 1 :(得分:1)

要捕获数字,不要使用[0-99999]之类的范围,而是按位数捕获。像[0-9] +这样的东西更像你想要的那部分。此外,逃避非常重要,就像codaddict所说。

答案 2 :(得分:1)

其他人已经提到了一些关于你的正则表达式的问题,所以我不打算重复它们。

关于如何指定您想要的内容,也存在一些问题。您只需通过

进行匹配即可
/theTaco=(\d+)/

并采取第一个捕获组。您没有向我们提供足够的信息来了解这是否符合您的需求。