我有以下复制示例,希望使用Regex在Sublime中进行查找和替换。但是我不知道如何选择除特定URL之外的所有URL。我知道,如果我知道url是什么,就可以很容易地做到这一点,但是我唯一知道的URL是我不想用锚标记替换的URL。
复制示例:
这是 example.com.au ,这是 exampleflowers.com.au 和 设置另一个 anotherexample.com.au/terms.html 网址。不好了 exampleflowers.com.au 再次在此句子中。
除了要在其中包含flowers.com.au的URL之外,我希望所有URL都由href标记包围!
我目前用于测试URL的简单正则表达式是:
/\w+(\.[^\s,\.^#]+)+/gi
我也尝试过
/\w+(?!flowers)(\.[^\s,\.^#]+)+/gi
任何帮助深表感谢。
答案 0 :(得分:1)
您的正则表达式将匹配1个以上的单词字符\w+
,然后将捕获组(\.[^\s,\.^#]+)+
本身匹配一个点并重复1次以上,并将其重复字符类中的1次以上。
如果(?!flowers)
不在右边,则负前行flowers
将在匹配1个以上的单词字符的末尾进行检查,这是正确的,因为它已经匹配了包括花在内的所有单词字符。 / p>
您可以将正则表达式与否定前瞻结合使用,以检查右侧的内容是否不包含flowers.com.au
查找
(?<!\S)(?!\S*flowers\.com\.au)(\w+(?:\.[^\s,.#]+)+)
替换
<a href="$1">$1</a>
说明
(?<!\S)
后面的否定断言来断言左侧的字符不是非空格字符(?!\S*flowers\.com\.au)
断言右边的否定断言不是0+乘以flowers.com.au
后跟一个非空白字符(\w+(?:\.[^\s,.#]+)+)
在捕获组中使用您的正则表达式,并在替换组中使用它请注意,您否定的字符类[^\s,\.^#]
可以写为[^\s,.#]+