这是我正在看的正则表达式。我把它分解成了几个部分。我想了解下面的意思。
^(\\s*\\[abc.*?)(\\])
这个正则表达式:
^- start of line
\\ --> matches \
s* --> matches character s ( 0 to unlimited times)
\\--> matches \
[abc.*?)(\\] --- I'm not sure what does this match exactly?
答案 0 :(得分:1)
Double \\
混乱是针对Java的。从那里删除一个,然后再试一次。
^(\s*\[abc.*?)(\])
现在再说一遍:
NODE EXPLANATION
--------------------------------------------------------------------------------
^ the beginning of the string
--------------------------------------------------------------------------------
( group and capture to \1:
--------------------------------------------------------------------------------
\s* whitespace (\n, \r, \t, \f, and " ") (0
or more times (matching the most amount
possible))
--------------------------------------------------------------------------------
\[ '['
--------------------------------------------------------------------------------
abc 'abc'
--------------------------------------------------------------------------------
.*? any character except \n (0 or more times
(matching the least amount possible))
--------------------------------------------------------------------------------
) end of \1
--------------------------------------------------------------------------------
( group and capture to \2:
--------------------------------------------------------------------------------
\] ']'
--------------------------------------------------------------------------------
) end of \2
答案 1 :(得分:0)
^(\\s*\\[abc.*?)(\\])
是一个转义用于Java字符串的正则表达式。取消后(在compiled之后java.util.regex.Pattern
),它是
^(\s*\[abc.*?)(\])
每件:
^
(
的开头
\s*
是*
:zero or more \s
:whitespace characters
\[abc
是文字字符串[abc
。开放式方括号是文字的,因为它是escaped。如果它没有被转义,它将是一个特殊的字符,表示character class的开始。
.*?
是任何字符的reluctantly zero or more
)
是捕获组的结尾
(\])
是另一个具有单个文字近似方括号的捕获组(字面值,因为它已被转义)。
此答案中的所有链接均来自Stack Overflow Regular Expressions FAQ。
答案 2 :(得分:0)