Ruby 带双引号的正则表达式

Ruby 带双引号的正则表达式,ruby,regex,Ruby,Regex,在引号之间给定一个字符串,例如“Hello” 以下正则表达式将打印不带双引号的字符串匹配项: /"([^"]+)"/ 我不明白它是如何捕捉角色的。我相信这应该只是最初的双引号。这个正则表达式的意思是找到一个以双引号开头和结尾,并且在开头有一个或多个双引号的表达式。它在开头捕获一个或多个双引号。它是如何将这里的字符串与[^”]+匹配的?表达式[^”]+的字面意思是匹配所有不是双引号的字符“。因此,当放入()中时,所有字符都位于第一个”之后,直到下一个“被捕获。这是因为[]字符类内部的^意味着否定

在引号之间给定一个字符串,例如“Hello”

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

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

表达式
[^”]+
的字面意思是匹配所有不是双引号的字符
。因此,当放入
()
中时,所有字符都位于第一个
之后,直到下一个
被捕获。这是因为
[]
字符类内部的
^
意味着否定,而不是字符串的开头,因为这意味着
[]
外部的字符串。所以
[^”]
的字面意思是除了
之外的任何东西

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

表达式的完整细分:

  • -第一个文字引号
  • -开始捕获
  • [^”]+
    所有后续字符,包括但不包括
  • -结束捕获组
  • -最终收盘报价文字

我假设您只是混淆了[]中的“^”,它否定了字符集,而不带括号地使用“^”表示字符串的开头。毫无疑问,重复使用字符会让人非常困惑。