【发布时间】:2014-07-21 13:45:34
【问题描述】:
我正在尝试匹配一个单词的所有出现...除非它们出现在一个 url 中,然后我不想匹配它。 假设我正在尝试匹配单词“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 确保cots 中的co 不匹配,但仍与网址中的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>"));
(使用下面的答案)
目前这给了我
<a href='/co'>co</a> and <a href='/co'>co</a>.uk
而我想要的是
<a href='/co'>co</a> and http://me.co.uk
谢谢
【问题讨论】:
-
您是要匹配包含字符串的单词还是整行?
-
您使用哪种语言/工具进行正则表达式?
-
Negative lookbehinds 是这样的:
(?<! )你正在使用负前瞻!... -
@Unihedron 啊!我一定是看错了,会回来更正的,谢谢