Skip to main content
 首页 » 编程设计

c#之正则表达式 c# 可选组之应该贪婪吗

2024年01月12日40haluo1

有正则表达式~像这样:

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 标记周围的括号是非捕获的。