带双引号的正则表达式

时间:2013-01-19 14:13:09

标签: ruby regex

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

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

/"([^"]+)"/

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

1 个答案:

答案 0 :(得分:8)

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

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

表达式的完整细分:

  • " - 第一个字面引用
  • ( - 开始捕获
  • [^"]+所有后续字符,但不包括"
  • ) - 结束捕获组
  • " - 最终结束引用文字