什么情况下,正则表达式中的字符 ^ 表示“匹配字符串的开头”,什么情况下表示“不是以下字符”? 通过维基百科和其他参考资料,我得出结论:^ 表示前者时位于字符串开头,表示后者时需要与括号一起使用。但是,当 ^ 位于开头和括号中时,程序如何处理呢?例如,
^[b-d]t$
匹配什么?^
只有当在[]
内部和开头时才表示“不是以下内容”,因此为[^...]
。[]
内部但不是开头时,它表示实际的^
字符。\^
)时,它也表示实际的^
字符。[^abc]
-> 不是a、b或c[ab^cd]
-> a、b、^(字符)、c或d\^
-> 一个^
字符^[b-d]t$
的含义是:
要忽略块注释? 好的,这个 ^\s*
可能不好用,因为 \s
可以跨行。看看 Dot-net 是否支持水平空格 \h
,如果没有,[^\S\r\n]
也可以。可以使用多行内联修饰符 (?m)
(或 RegexOptions.Multiline
)。这会更改 ^
的含义,从字符串开头变为行开头(默认值)。所以,它最终变成了 (?m)^\h*(#)
。捕获组应该告诉位置。如果没有,那么也一样可以 (?m)(?<=^\h*)#
,匹配的位置是偏移量。
请参阅此处以获取完整的正则表达式信息https://learn.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference
请注意,^\s*
当然可以用,但它会匹配很多不必要的杂质,可能会跨越多行。
[^\^]
不是脱字符! - K0D4[^^]
,完全跳过反斜杠。 - RARE Kpop Manifesto