我有一个包含html的字符串,我需要一个正则表达式来获取具有特定域名且具有noFollow的字符串
我发现这对域名有效,但不包括nofollow条件(〈a\s*(?!.\brel=)[^〉])(href=“https?://)((?stackoverflow)[^"]+)"([^〉]*)〉
假设我想要的域名是stackoverflow示例:
- "<a href="stackoverflow.com" rel = "nofollow">click here </a>" this would match
- "<a href="stackoverflow.com"> would not match since it has no follow
- "<a href="google.com" rel = "nofollow"> would not match
1条答案
按热度按时间zengzsys1#
将HTML标记与特定条件匹配有点困难,但下面的正则表达式应该可以做到这一点:
它 * 真的 * 很难读,但是基本上大多数正则表达式都是用来匹配属性的,对你来说重要的是找到
stackoverflow\.com
(它可以被找到2次;一个用单引号表示href
,另一个用双引号表示),并将其替换为所需的任何域(不要忘记正确转义)。一些注解
我不知道你想使用哪个regexp函数,但是你应该可以把它和你需要的任何regexp函数一起使用。另外一件事是你的例子
<a href="stackoverflow.com" rel = "nofollow">click here </a>
不会匹配。因为属性名称和=
符号之间有空格(我不知道这是否是有效的HTML或没有)。它将与此<a href="stackoverflow.com" rel="nofollow">click here </a>
工作。如果您需要匹配的地址可能包括=
符号之间的空格只是注解我和我'我将尝试编辑正则表达式。