我试图在Visual Studio 2015中找到包含字符序列DMS的字符串文字。为此我使用了这个regualar表达式:
"[^"]*DMS[^"]*"
令我惊讶的是,搜索结果不仅包含正确的匹配,还包含
等命中/// <param name="context">Service Context.</param>
有人可以解释原因吗?
答案 0 :(得分:2)
"[^"]*DMS[^"]*"
可能会有意外匹配,因为[^"]*
可能会跨越多行,请参阅此示例:https://regex101.com/r/fgVpFc/1
一个好的解决方法是将字符类仅限制为您期望的字符,例如:
"[^"\n]*DMS[^"\n]*"
- 不允许多行匹配。"\S*DMS\S*"
- 根本不允许空格。"[\w.]*DMS[\w.]*"
- 仅允许使用字母数字字符和点。