2024-05-29 11:17:47 发布
网友
具体来说,^在正则表达式中何时表示“match start”,何时表示“not the following”?
^
从维基百科的文章和其他参考资料中,我得出结论:前者在开头,后者与括号一起使用,但是程序如何处理插入符号在开头和括号处的情况?比如说,^[b-d]t$匹配什么?
^[b-d]t$
^仅在[]的内部和开始处表示“不是下面的”,因此[^...]。
[]
[^...]
当它在[]中,但开始时不是时,它表示实际的^字符。
当它被转义(\^)时,也意味着实际的^字符。
\^
在所有其他情况下,它意味着字符串/行的开始(其中一个与语言/设置相关)。
简而言之:
[^abc]
[ab^cd]
所以^[b-d]t$的意思是:
我在回答这个问题Meaning of caret depending on the context Wiktor Stribiżew于2019年11月16日将其标记为完全复制品 其中Carets in Regular Expressions
要忽略块注释吗?好吧,这个^\s*可能不好,因为\s可以跨行。看看Dot net是否支持水平空白\h如果不支持[^\S\r\n]也可以。可以使用多行内联修饰符(?m)(或RegexOptions.Multiline)。这将改变^的含义,表示行的开始,而不是字符串的开始(默认值)。所以,它最终是(?m)^\h*(#)。抓捕组应该告诉他们位置。如果不是,这也是(?m)(?<=^\h*)#,匹配的位置就是偏移量。
^\s*
\s
\h
[^\S\r\n]
(?m)
RegexOptions.Multiline
(?m)^\h*(#)
(?m)(?<=^\h*)#
有关完整的regex信息,请参见此页https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference
注意^\s*当然可以工作,但是它匹配许多不必要的可以跨行的cruft。
^
仅在[]
的内部和开始处表示“不是下面的”,因此[^...]
。当它在
[]
中,但开始时不是时,它表示实际的^
字符。当它被转义(
\^
)时,也意味着实际的^
字符。在所有其他情况下,它意味着字符串/行的开始(其中一个与语言/设置相关)。
简而言之:
[^abc]
->;不是a、b或c[ab^cd]
->;a、b、^(字符)、c或d\^
->;一个^
字符所以
^[b-d]t$
的意思是:我在回答这个问题Meaning of caret depending on the context
Wiktor Stribiżew于2019年11月16日将其标记为完全复制品
其中Carets in Regular Expressions
要忽略块注释吗?好吧,这个
^\s*
可能不好,因为\s
可以跨行。看看Dot net是否支持水平空白\h
如果不支持[^\S\r\n]
也可以。可以使用多行内联修饰符(?m)
(或RegexOptions.Multiline
)。这将改变^
的含义,表示行的开始,而不是字符串的开始(默认值)。所以,它最终是(?m)^\h*(#)
。抓捕组应该告诉他们位置。如果不是,这也是(?m)(?<=^\h*)#
,匹配的位置就是偏移量。有关完整的regex信息,请参见此页https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference
注意
^\s*
当然可以工作,但是它匹配许多不必要的可以跨行的cruft。相关问题 更多 >
编程相关推荐