查找后面没有结束 span 标记的域

Find domains that are not followed by a closing span tag

我正在尝试从某些文本中对域进行正则表达式。我想忽略后跟 </span> 标记的域。

例如给定以下输入:

matchme.com<span>dontmatchme.com</span>

我希望我的火柴包含一项:

matchme.com

我尝试了以下方法:

(?:[A-Za-z0-9|-]+\.*[A-Za-z0-9|-]+\.[a-z]+)(?!<\/span)

上面的问题是负先行仅仅意味着输入中的第二项被缩短并且仍然被认为是有效的:

matchme.com
dontmatchme.co

我这里有一个 regex101 https://regex101.com/r/FpWomQ/1

您能否更改正则表达式以忽略以 < 开头的行,如果可以,您可以使用此正则表达式

^[^<]*$

意味着它将匹配任何不以 <

开头的行

您可以使用以下正则表达式:

[a-z.]+(?=<\/span>)|([a-z.]+)(?=<[\/a-z]+>)

正则表达式使用交替来仅捕获未跟随 </span> 的域。

  • [a-z.]+ 匹配尽可能多的字母或 . 个字符。
  • (?=<\/span>) </span> 的积极前瞻。
  • |交替(或)。
  • ([a-z.]+) 捕获组。匹配尽可能多的字母或 . 个字符。
  • (?=<[\/a-z]+>) 左括号 <、字母字符或正斜杠 /、右括号 >.
  • 的正向预测

所需的匹配包含在捕获组中。 你可以试试 regex live here.