3

给定引号之间的字符串,例如“Hello”

以下正则表达式将打印出不带双引号的字符串匹配:

/"([^"]+)"/

我不明白它是如何捕捉角色的。我相信这应该捕获的只是最初的双引号。这个正则表达式的意思是找到一个以双引号开头和结尾的表达式,并且在开头有一个或多个双引号。它会在开头捕获一个或多个双引号。它如何最终将此处的字符串与 匹配[^"]+

4

1 回答 1

8

该表达式的[^"]+字面意思是匹配所有不是双引号的字符"。因此,当放置在 内部时,将捕获第一个和下一个()之后的所有字符。这是因为字符类的内部意味着否定,而不是字符串的开头,因为它意味着. 所以字面意思是除了 a 之外的任何东西""^[][][^"]"

本身就是捕获组,()正则表达式只会捕获存在于内部的表达式()。根据您使用的编程语言,它也可能将"Hello"整个表达式匹配的整个字符串记录/"([^"]+)"/在一个单独的变量中,但目的()是捕获其内容。

表达式的完整分解:

  • " - 第一个字面引用
  • ( - 开始捕获
  • [^"]+所有后续字符,但不包括"
  • )- 结束捕获组
  • "- 最后的结束引号文字
于 2013-01-19T14:16:21.983 回答