[英]Limit Regex to word boundaries
我有一些文字
"Lorem ipsum dolor sit amet, consectetuer adipiscing elit."
我有一个正则表达式,它是根据用户输入生成的。
@".*ip.*"
正如您所期望的,这与整行匹配,因此我用单词边界包装了此表达式。
@"\b.*ip.*\b"
因为处理器是贪婪的,所以它仍然匹配整个文本。 因此,我尝试使重复变得懒惰。
@"\b.*?ip.*?\b"
更好但是匹配
Lorem ipsum
dolor sit amet, consectetuer adipiscing
我该如何扩展原始的@".*ip.*"
模式,使其与整个单词和捕获词完全匹配?
ipsum
adipiscing
这个正则表达式测试器可能对于回答问题很有用
为什么不只使用\\w*
而不是.*?
:
@"\w*ip\w*"
这也将匹配_
和0-9
因为它包含在\\w
。 如果要排除它,可以显式使用[a-zA-Z]*
代替\\w
。
您已经接近解决方案。 只需用非空格转义序列\\ S替换点(任何字符):
@"\b\S*?ip\S*?\b"
我认为某些单词可以包含连字符,因此最好使用模式[\\w-]*ip[\\w-]*
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.