有正则表达式~像这样:
blablabla.+?(?:<a href="(http://.+?)" target="_blank">)?
如果我找到一个 URL,我想捕获它...找到东西但我没有得到链接(捕获总是空的)。现在,如果我像这样删除末尾的问号
blablabla.+?(?:<a href="(http://.+?)" target="_blank">)
这只会匹配末尾有链接的内容...现在是凌晨 2 点 40 分...我没有任何想法...
--编辑--
示例输入:
blablabla asd 1234t535 <a href="http://google.com" target="_blank">
预期输出:
match 0:
group 1: <a href="http://google.com" target="_blank">
group 2: http://google.com`
我只想要“http://google.com”或“”
请您参考如下方法:
你在做全串匹配吗?如果是这样,请尝试将 .* 添加到第一个正则表达式的末尾并查看它匹配的内容。第一个正则表达式的问题是它可以匹配 blablabla 之后的任何内容,因为 .+? (导致空捕获),但括号内的部分仍然不会匹配 a 标签,除非它在字符串的末尾。顺便说一句,看看你的预期输出,捕获 1 将是 URL;由于 ?: 开头,整个 HTML 标记周围的括号是非捕获的。
