Regex 正则表达式提取包含特定单词的超链接

Regex 正则表达式提取包含特定单词的超链接,regex,Regex,我需要从一段文本中提取一个超链接,其中包含url中的特定单词。榜样 “这是一个包含指向某个页面的链接的文本。单击此链接可查看该页面。此处的链接中没有“specificword”一词:” 所以,我需要解析这个文本,检查超链接,看看其中是否有一个包含单词“specificword”,然后提取整个超链接。然后我会得出这样的结论: <a href="/server/specificword.htm>this is a link to a page</a> 我需要在url中包

我需要从一段文本中提取一个超链接,其中包含url中的特定单词。榜样

“这是一个包含指向某个页面的链接的文本。单击此链接可查看该页面。此处的链接中没有“specificword”一词:

所以,我需要解析这个文本,检查超链接,看看其中是否有一个包含单词“specificword”,然后提取整个超链接。然后我会得出这样的结论:

<a href="/server/specificword.htm>this is a link to a page</a>

我需要在url中包含specificword的超链接,例如/server/specificword.htm,而不是在链接文本中

我试过的一个正则表达式是:
/(]*>.*)specificword/
这将匹配文本中的所有超链接或“specificword”。如果文本有多个链接,没有“specificword”这个词,我也会得到这些链接

另外,我也试过这个,但它不适用:

<a.*?href\s*=\s*["\']([^"\'>]*specificword[^"\'>]*)["\'][^>]*>.*?<\/a>
]*)[“\'][^>]*>.*?

我的正则表达式技能到此结束,任何帮助都会很好……

请尝试以下所有a标签:

/<a [^>]*\bhref\s*=\s*"[^"]*SPECIFICWORD.*?<\/a>/
/]*\bhref\s*=\s*“[^”]*特定单词。*/
或者仅针对链接(在第一个捕获组中):

/]*\bhref\s*=\s*”([^“]*特定单词[^”]*)/
如果使用php,对于链接:

preg_match_all('/<a [^>]*\bhref\s*=\s*"\K[^"]*SPECIFICWORD[^"]*/', $text, $results);
preg_match_all('/]*\bhref\s*=\s*“\K[^”]*SPECIFICWORD[^”]*/',$text,$results);

您尝试的最后一个正则表达式几乎拥有它。请尝试对其进行以下更改:

<a\s.*?href=["']([^"']*?specificword[^"']*?)[^>]*>.*?<\/a>
]*>.*?

主要区别在于使量词“懒惰”。

这一个应该适合您的需要:



如果您想在锚点tar上允许其他属性,并且对内部空间更为挑剔,您可以尝试:



当然,您也可以使用非捕获组
(?:…)



最后,如果您希望允许对
href
属性使用简单的引号:



最后但并非最不重要的一点:如果要捕获URL,只需在
[^\1]*?specificword.*?
部分周围加上括号即可:



尝试这种模式这正是您想要的要求

(?=.*href=\"([^\"]*specificword[^"]*)")<a [^>]+>
(?=.*href=\”([^\”]*specificword[^“]*)”)+>
如果只需要url值,请使用组[1] 比如:

Regex.match(“输入字符串”、@“(?=.*href=\”([^\“]*specificword[^“]*)”)]+>”。组[1]。值;

>
之前是否有引用,或者它实际上丢失了?您的编程语言/工具/环境是什么?C#和Visual Studio。我尝试了这一个,它似乎返回了链接文本中带有特定单词的超链接,而不是url中的超链接。我需要url中带有单词的超链接…我正在尝试正则表达式中的一些内容设计器。非常接近……这似乎与
匹配(请参见
a
href
之间缺少的空格).你是对的,我用错了,对不起。但是,我会接受另一个答案,因为它是第一个…谢谢!!@sp00m很好的观点。我已经编辑了这个问题,至少包含了1个空格。谢谢大家!!!很多很棒的和有帮助的答案。我会接受这个作为正确答案,因为它是第一个进来的。希望我我能接受你们所有的答案…谢谢!非常感谢。我真的能从你们身上学到很多!!
(?=.*href=\"([^\"]*specificword[^"]*)")<a [^>]+>
Regex.match("input string",@"(?=.*href=\"([^\"]*specificword[^"]*)")<a [^>]+>").Groups[1].value;