使用正则表达式在字符串文字中搜索子字符串会给出错误的结果
Search for substring in string literal using regular expressions gives wrong results
我试图在 Visual Studio 2015 中找到包含字符序列 DMS 的字符串文字。为此,我使用了这个正则表达式:
"[^"]*DMS[^"]*"
令我惊讶的是,搜索结果不仅包含正确的匹配项,还包含类似
的匹配项
/// <param name="context">Service Context.</param>
有人可以解释为什么吗?
"[^"]*DMS[^"]*"
可能会有意外匹配,因为 [^"]*
可能跨越多行,请参见此处的示例:https://regex101.com/r/fgVpFc/1
一个好的解决方法是将字符 类 限制为您期望的字符,例如:
"[^"\n]*DMS[^"\n]*"
- 不允许多行匹配。
"\S*DMS\S*"
- 完全不允许空格。
"[\w.]*DMS[\w.]*"
- 只允许字母数字字符和点。
我试图在 Visual Studio 2015 中找到包含字符序列 DMS 的字符串文字。为此,我使用了这个正则表达式:
"[^"]*DMS[^"]*"
令我惊讶的是,搜索结果不仅包含正确的匹配项,还包含类似
的匹配项/// <param name="context">Service Context.</param>
有人可以解释为什么吗?
"[^"]*DMS[^"]*"
可能会有意外匹配,因为 [^"]*
可能跨越多行,请参见此处的示例:https://regex101.com/r/fgVpFc/1
一个好的解决方法是将字符 类 限制为您期望的字符,例如:
"[^"\n]*DMS[^"\n]*"
- 不允许多行匹配。"\S*DMS\S*"
- 完全不允许空格。"[\w.]*DMS[\w.]*"
- 只允许字母数字字符和点。