我想在一个大的html文本中获取某个html节点,但是我的正则表达式中的某些内容很糟糕。
我想获取所有看起来像这样的网址:
<a href="ftp://mysite.com"> some stuff </a>
我正在尝试:
/<a href="ftp:(.+)">/
但有时它会起作用,但有时会抓住所有内容直到下一次关闭>
。
有没有办法重写这个正则表达式,所以它会停在第一个>
?
答案 0 :(得分:1)
让你的正则表达不成熟:
/<a href="ftp:(.+?)">/
// here __^
或:
/<a href="ftp:([^>"]+)">/
但使用解析器会更好。
答案 1 :(得分:1)
*
,+
是绿色的(尽可能匹配)。通过在他们之后附加?
,您可以非贪婪。
/<a href="ftp:(.+?)">/
或者您可以使用否定字符类("
)指定排除[^...]
:
/<a href="ftp:([^"]+)">/
BTW, it's not a good idea to use regular expression to parse HTML.
答案 2 :(得分:1)
+
是一个贪心运算符,意味着它尽可能匹配,并且仍允许正则表达式的其余部分匹配。为此,我建议使用否定类,表示除"
&#34;一个或多个&#34;之外的任何字符。次。
/<a href="ftp:([^"]+)">/