我试图匹配单词的所有出现...除非它们出现在网址中,否则我不想匹配它。 让我们假设我试图匹配“' co'
should match: cots and co
should not match: not http://me.co.uk
should match: last of my co.
我试图用something like this背后的负面看法:
(?!http)\bco\b
\b
确保co
中的cots
不匹配,但仍匹配网址中的co
。
(?!http).*\bco\b // This matches the whole sentence until the url
(?!http.*)\bco\b // this doesn't match anything
不确定背后的消极看法是否可行,在我的情况下,可以安全地假设所有网址都以http://
开头,这样我就可以尝试开始。
那么除了url之外,我如何匹配co
到处?
编辑:
我想匹配单词,而不是整个句子 我在c#
上这样做了编辑2: 我尝试做的是将所有非网址关键字转换为我博客上的内部网址。
我现在得到了什么:
string orig = "co and http://me.co.uk";
string pros = Regex.Replace(orig, @"https?://\S*?co|\bco\b", m => string.Format("<a href='/co'>co</a>"));
(使用下面的答案)
目前这给了我
<a href='/co'>co</a> and <a href='/co'>co</a>.uk
和我想要的是
<a href='/co'>co</a> and http://me.co.uk
由于
答案 0 :(得分:1)
您可以在C#中使用这样的正则表达式:
(?<!https?://\S*)\bco\b
答案 1 :(得分:0)
试试这个:
^(?!http\S+\.co(\.|\?|$)).*\b(co)\b
匹配位于第1组 - 请参阅demo对照这些输入:
cots and co
last of my co.
http://me.co.uk
http://me.example.co
http://me.example.co?foo=bar