是什么正确解码这个正则表达式:^(\\ s * \\ [abc。*?)(\\])

时间:2014-04-10 17:17:43

标签: java regex

这是我正在看的正则表达式。我把它分解成了几个部分。我想了解下面的意思。

^(\\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?

3 个答案:

答案 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.*?)(\])

每件:

^

^:start of line/input anchor

(

capture group

的开头
\s*

*:zero or more \s:whitespace characters

\[abc

是文字字符串[abc。开放式方括号是文字的,因为它是escaped。如果它没有被转义,它将是一个特殊的字符,表示character class的开始。

.*?

是任何字符的reluctantly zero or more

)

是捕获组的结尾

(\])

是另一个具有单个文字近似方括号的捕获组(字面值,因为它已被转义)。


此答案中的所有链接均来自Stack Overflow Regular Expressions FAQ

答案 2 :(得分:0)

来自debuggex beta

的图片展示

enter image description here