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