什么是这个正则表达式的意思?

时间:2012-06-20 05:41:59

标签: regex

在以下正则表达式中:

[a-zA-Z_]?\"(\\.|[^\\"])*\"

\"(\\.|[^\\"])*\"是什么意思?

2 个答案:

答案 0 :(得分:1)

以下是描述:

[              # start character class
  a-zA-Z         # case insensitive character match
  _              # underscores are allowed too
]              # end character class
?              # match zero or one time
(              # start group
  \\.            # dot character
  |              # OR
  [              # start character class
    ^              # match any character
    \\"            # except double quote
  ]              # end character class
)              # end group
*              # match zero or more occurrences 

答案 1 :(得分:0)

它看起来像java,所以分解

\"(\\.|[^\\"])*\" 

我们得到:

  • \"字面引用"
  • (启动小组
  • \\.字面点
  • |逻辑“或”
  • [开始角色等级
  • ^否定
  • \\"不必要地转义引号 - 相当于\" - 也应该有3个或1个反斜杠,所以这是一个语法错误,因为它是
  • ]结束字符类
  • )结束组
  • *任意数量的
  • \"字面引用"

总之,这意味着:引号之间的任意数量的点(包括零点)

角色类试图不贪婪,但有更简单的方法 - 只需使用“非贪婪”运算符*?。即它可以被替换为:

\"\\.*?\"