C# 将正则表达式限制为单词边界

C# 将正则表达式限制为单词边界,c#,.net,regex,C#,.net,Regex,我有一些文字 "Lorem ipsum dolor sit amet, consectetuer adipiscing elit." 我有一个正则表达式,由用户输入生成 @".*ip.*" 正如您所期望的,这与整行匹配,所以我用单词边界来包装这个表达式 @"\b.*ip.*\b" 因为处理器是贪婪的,所以它仍然匹配整个文本。所以,我试着让重复变得懒惰 @"\b.*?ip.*?\b" 这样比较好,但是很相配 乱数假文 多洛·西特·阿梅特,继续告别 如何扩展原始@.*ip.*模式,使其惰性地

我有一些文字

"Lorem ipsum dolor sit amet, consectetuer adipiscing elit."
我有一个正则表达式,由用户输入生成

@".*ip.*"
正如您所期望的,这与整行匹配,所以我用单词边界来包装这个表达式

@"\b.*ip.*\b"
因为处理器是贪婪的,所以它仍然匹配整个文本。所以,我试着让重复变得懒惰

@"\b.*?ip.*?\b"
这样比较好,但是很相配

乱数假文 多洛·西特·阿梅特,继续告别 如何扩展原始@.*ip.*模式,使其惰性地匹配整个单词和捕获

乱数假文 告别 这可能有助于回答问题

为什么不使用\w*而不是。*?:


这也将匹配u和0-9,因为它包含在\w中。如果要排除它,可以显式地使用[a-zA-Z]*而不是\w那里。

您已经接近解决方案了。只需用非空白转义序列替换点any char\S:

@"\b\S*?ip\S*?\b"

我认为有些单词可能包含连字符,因此最好使用模式[\w-]*ip[\w-]*

您可以使用捕获组,如\b.*ip.*?\b,然后ip单词将在组中捕获1@ExplosionPills,当我在链接测试仪中尝试它时,这似乎不起作用。这不会返回包含ip的单词之前的所有单词吗?。我以为他只想要一个包含ip@Guido. 他只想要单词,而不想要任何包含ip的非单词字符。“我想是吧!”懒别列佐夫斯基说。为此,它将返回ipsu不是一个单词字符,所以就到此为止。@RohitJain我知道,我只是把这个问题指给你们看solution@lazyberezovsky. 是的,但我认为这似乎不是问题。让我们听听OP的话,他到底想要什么。
@"\b\S*?ip\S*?\b"