给定引号之间的字符串,例如“Hello”
以下正则表达式将打印出不带双引号的字符串匹配:
/"([^"]+)"/
我不明白它是如何捕捉角色的。我相信这应该捕获的只是最初的双引号。这个正则表达式的意思是找到一个以双引号开头和结尾的表达式,并且在开头有一个或多个双引号。它会在开头捕获一个或多个双引号。它如何最终将此处的字符串与 匹配[^"]+
?
该表达式的[^"]+
字面意思是匹配所有不是双引号的字符"
。因此,当放置在 内部时,将捕获第一个和下一个()
之后的所有字符。这是因为字符类的内部意味着否定,而不是字符串的开头,因为它意味着. 所以字面意思是除了 a 之外的任何东西。"
"
^
[]
[]
[^"]
"
本身就是捕获组,()
正则表达式只会捕获存在于内部的表达式()
。根据您使用的编程语言,它也可能将"Hello"
整个表达式匹配的整个字符串记录/"([^"]+)"/
在一个单独的变量中,但目的()
是捕获其内容。
表达式的完整分解:
"
- 第一个字面引用(
- 开始捕获[^"]+
所有后续字符,但不包括"
)
- 结束捕获组"
- 最后的结束引号文字