.NET正则表达式如何匹配在特定位置不包含单词的字符串

时间:2011-07-26 23:45:55

标签: c# regex regex-negation

如果我有一个文本行,例如“so so so bit mike”,那么可能是任何一组包含任何空格组的单词组,那么正则表达式会是什么样的匹配

“某某位迈克”但不是“某某真的有点迈克”

我认为匹配的唯一方法是.*,但.* (?!really)bit mike仍匹配。

请注意,出于我的目的,我需要使用单个正则表达式。

2 个答案:

答案 0 :(得分:2)

当您打算使用负面后视((?!...))时,您可能使用过期前瞻((?<!...)。模式:

(?<!really )bit mike

将匹配

so and so bit mike

但不是

so and so really bit mike

答案 1 :(得分:2)

.* (?!really)bit mike匹配。事实上你的负面前瞻在那里毫无用处,因为你基本上说接下来的六个角色一定不是“真的”,但是你说它们必须是“位mi”。没有字符串可以同时匹配“位mi”和“真正”,所以如果:

.* bit mike匹配字符串,.* (?!really)bit mike

也匹配

我不知道这是否是最简单的方法,但尝试使用负面的lookbehind而不是前瞻:

.*(?<!really) bit mike

其中说bit mike之前的六个字符实际上不是字符串