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

C# .NET正则表达式如何匹配在特定位置不包含单词的字符串,c#,regex,regex-negation,C#,Regex,Regex Negation,如果我有一个文本行,比如so和so,其中so和so可以是任何一组单词,其中有任何一组空格,那么一个正则表达式会是什么样的呢 某某咬了迈克,但不是某某真的咬了迈克 我能想到的唯一匹配某某的方法是。*,但是。*?!真的吗?迈克仍然在比赛 请注意,出于我的目的,我需要这个函数来处理单个正则表达式。您可能使用了负前瞻?!。。。你什么时候打算用消极的回头看?。模式: (?<!really )bit mike 但不是 so and so really bit mike 你可能用了消极的前瞻?!。。

如果我有一个文本行,比如so和so,其中so和so可以是任何一组单词,其中有任何一组空格,那么一个正则表达式会是什么样的呢

某某咬了迈克,但不是某某真的咬了迈克

我能想到的唯一匹配某某的方法是。*,但是。*?!真的吗?迈克仍然在比赛


请注意,出于我的目的,我需要这个函数来处理单个正则表达式。

您可能使用了负前瞻?!。。。你什么时候打算用消极的回头看?。模式:

(?<!really )bit mike
但不是

so and so really bit mike

你可能用了消极的前瞻?!。。。你什么时候打算用消极的回头看?。模式:

(?<!really )bit mike
但不是

so and so really bit mike
?!真的有点像迈克。事实上,你的消极前瞻是没有用的,因为你基本上是说接下来的六个字符不一定是真的,但是你说它们一定是位mi。没有字符串可以同时匹配位mi,因此如果:

*位mike与字符串匹配,那么也是。*?!真的吗,迈克

我不知道这是否是最简单的方法,但请尝试使用负向后看而不是向前看:

*

也就是说,在mike位之前应该有六个字符,而mike位不可能是真正的字符串

*?!真的有点像迈克。事实上,你的消极前瞻是没有用的,因为你基本上是说接下来的六个字符不一定是真的,但是你说它们一定是位mi。没有字符串可以同时匹配位mi,因此如果:

*位mike与字符串匹配,那么也是。*?!真的吗,迈克

我不知道这是否是最简单的方法,但请尝试使用负向后看而不是向前看:

*


也就是说,在mike之前应该有六个字符,而mike不能是字符串,我认为这是不可能的,如果某某可以是任何东西,谁能说它不可能是,从你的例子来看,某某真的?如果我们假设除某某之外的任何东西都是可能的呢?如果我理解正确的话,这就是问题所在,任何东西都可以在mike前面加前缀。你基本上是说我知道它需要以bit mike结束,任何事情都可以在它之前发生。我不认为这是可能的,如果某某可以成为任何事情,谁会说它不可能,从你的例子来看,某某真的?如果我们假设除某某之外的任何事情都是可能的呢?如果我理解正确的话,这就是问题所在,任何东西都可以在mike前面加前缀。你基本上是说我知道它需要以bit mike结束,任何事情都可以在它之前发生。消极的后视模式被捕获了吗?这是一个replace语句,我需要知道某某实际上是什么。@pquest,no,lookahead不会捕获任何内容。但是如果您想捕获某某,您应该将.*括在括号中,比如:.*?它不是捕获,所以.*?如果模式匹配,则应该捕获某某。按照你们写这篇文章的方式,捕获的模式不会是某某,而不是某某。注意下面的空格end@pquest: .*? 将包括尾随空格。是否捕获负后向查找模式?这是一个replace语句,我需要知道某某实际上是什么。@pquest,no,lookahead不会捕获任何内容。但是如果您想捕获某某,您应该将.*括在括号中,比如:.*?它不是捕获,所以.*?如果模式匹配,则应该捕获某某。按照你们写这篇文章的方式,捕获的模式不会是某某,而不是某某。注意下面的空格end@pquest: .*? 将包括尾随空格。如果我要使用。*?@pquest是的,哈哈,很好的时机。我只是在回复你对drf帖子的评论时发布的。哈哈,很抱歉问了两次!我不确定你是否也会看到这个问题。谢谢如果我要使用。*?@pquest是的,哈哈,时机很好。我只是在回复你对drf帖子的评论时发布的。哈哈,很抱歉问了两次!我不确定你是否也会看到这个问题。谢谢