提问人:PradanaBackUp 提问时间:12/15/2022 最后编辑:Konrad RudolphPradanaBackUp 更新时间:12/25/2022 访问量:56
“[\S\s]*?”这个正则表达式是什么意思?
"[\S\s]*?" What Does This Regex Mean?
问:
据我所知,
[\S\s]
== 匹配任何字符,*
== 匹配任何字符?
== 可选。
这是什么意思?
System.Text.RegularExpressions.Regex.Match(getMsg,"(?<=Status :\s+)[\S\s]*?(?= ╙█)").Value
使用正则表达式的输入为:
"Status : ******** "
答:
0赞
Nick Boswell
12/25/2022
#1
您在第一次评估中是正确的 - [\S\s] 将匹配任何字符 - 包括空格和换行符。第二个评估在技术上是不正确的 - 星号通配符符号表示它将匹配零个或多个前一个标记,因此与第一部分结合使用,yes 将表示“匹配任何字符”。
?在正则表达式中并不意味着“可选”。这意味着:(来源:https://regexr.com/)。这基本上会否定星号量词,并且大多会导致意外结果 - 请谨慎使用“*”和“?”。Makes the preceding quantifier lazy, causing it to match as few characters as possible. By default, quantifiers are greedy, and will match as many characters as possible.
除了前面使用的 \s+ 令牌外,这个正则表达式中还有很多事情要做。查看 https://regexr.com/,并在使用正则表达式时将其用作始终的工具。此站点不仅解释了正则表达式的各个方面,还允许您测试当前表达式以查看测试表达式是否匹配。
评论