C# 正则表达式匹配单词,除非它是';这是url的一部分

C# 正则表达式匹配单词,除非它是';这是url的一部分,c#,regex,c#-4.0,C#,Regex,C# 4.0,我试着匹配一个词的所有出现。。。除非它们出现在url中,否则我不想匹配它。 假设我在尝试匹配“co”这个词 should match: cots and co should not match: not http://me.co.uk should match: last of my co. 我试着用一种消极的眼光来看待后面的情况,包括: \b确保cots中的co不匹配,但仍与url中的co匹配 (?!http).*\bco\b // This matches the whole sente

我试着匹配一个词的所有出现。。。除非它们出现在url中,否则我不想匹配它。 假设我在尝试匹配“co”这个词

should match: cots and co 
should not match: not http://me.co.uk
should match: last of my co.
我试着用一种消极的眼光来看待后面的情况,包括:

\b
确保
cots
中的
co
不匹配,但仍与url中的
co
匹配

(?!http).*\bco\b // This matches the whole sentence until the url
(?!http.*)\bco\b // this doesn't match anything
不确定是否应该使用反向查找,在我的例子中,可以安全地假设所有url都以
http://
开头,所以我正试图从这里开始

那么,除了url中的
co
之外,我将如何匹配所有位置

编辑:

我只想匹配单词,而不是整个句子
我在c上做这个#

编辑2: 我要做的是将所有非url关键字转换为我博客上的内部url

我现在得到的是:

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>"));
string orig=“co和http://me.co.uk";
string pros=Regex.Replace(orig,@“https:/\S*?co|\bco\b”,m=>string.Format(“”);
(使用下面的答案)

这给了我

<a href='/co'>co</a> and <a href='/co'>co</a>.uk
和.uk
我想要的是

<a href='/co'>co</a> and http://me.co.uk
和http://me.co.uk

谢谢

您可以在C#中使用这样的正则表达式:

(?试试这个:

^(?!http\S+\.co(\.|\?|$)).*\b(co)\b
匹配在第1组中-参见这些输入:

cots and co 
last of my co.
http://me.co.uk
http://me.example.co
http://me.example.co?foo=bar

您正在尝试匹配包含字符串或整行的单词吗?您用于正则表达式的语言/工具是什么?负面外观如下:
(?你使用的是负面前瞻!…@Unihedron啊!我一定是看错了,会更正回来的,谢谢,我可能遗漏了什么,但这切断了上次匹配的所有文本!嗨,这与你链接的在线演示上的url不匹配,但是,出于某种原因,在我的c上它是匹配的。演示上的
~
对我有什么影响一个?啊,它似乎也与url匹配,看看这里的替换栏:太棒了,这很有效,谢谢!我尝试了
(?…它从一开始就选择了所有内容..有点接近,但没有雪茄!不客气,很高兴它成功了。只因为C#regex允许可变长度的查找。
^(?!http\S+\.co(\.|\?|$)).*\b(co)\b
cots and co 
last of my co.
http://me.co.uk
http://me.example.co
http://me.example.co?foo=bar