-1

在以下正则表达式中:

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

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

4

2 回答 2

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 
于 2012-06-20T06:05:02.993 回答
0

它看起来像 java,所以崩溃了

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

我们得到:

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

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

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

\"\\.*?\"
于 2012-06-20T06:02:49.937 回答