好吧,在这里,我回到正则表达式,我对它的理解不足。花了更多时间学习它,这就是我提出的:
/<a href=\"travis.php?theTaco=([0-9999999])\">(.*)</a>
我基本上想要这个字符串中的数字:
<a href="travis.php?theTaco=510973">510973</a>
我的正则表达式几乎是好的?我原来是:
"/<a href=\"travis.php?theTaco(.*)\">(.*)<\/a>/";
但有时候它给了我很大的回报。所以,我只想获得数字。 我搜索过其他帖子,但是有大量不相关的内容,请举例说明,资源或链接指向一个非常相关的问题。
谢谢。
答案 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+)/
并采取第一个捕获组。您没有向我们提供足够的信息来了解这是否符合您的需求。