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

Jod*_*ell 0 .net c# regex

我有一些文字

"Lorem ipsum dolor sit amet, consectetuer adipiscing elit."
Run Code Online (Sandbox Code Playgroud)

我有一个正则表达式,它是从用户输入生成的.

@".*ip.*"
Run Code Online (Sandbox Code Playgroud)

这正如你所期望的那样匹配整行,所以我用字边界包装这个表达式.

@"\b.*ip.*\b"
Run Code Online (Sandbox Code Playgroud)

因为处理器是贪婪的,所以这仍然匹配整个文本.所以,我试过让重复变得懒惰.

@"\b.*?ip.*?\b"
Run Code Online (Sandbox Code Playgroud)

这是更好但匹配

  1. Lorem ipsum
  2. dolor sit amet, consectetuer adipiscing

如何扩展原始@".*ip.*"模式,使其懒惰地匹配整个单词和捕获?

  1. ipsum
  2. adipiscing

这个正则表达式测试器可能对回答问题很有用

Roh*_*ain 5

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

@"\w*ip\w*"
Run Code Online (Sandbox Code Playgroud)

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