我正在读这个,我不明白。我有两个问题。
([aeiou])和有什么区别[aeiou]?
是什么<\1>意思?
"hello".sub(/([aeiou])/, '<\1>') #=> "h<e>llo"
这里记录了:
如果替换是一个字符串,它将被替换为匹配的文本。它可能包含对模式捕获组的反向引用,形式为
"\d",其中d是组号,或者"\k<n>",其中n是组名。如果它是双引号字符串,则两个反向引用都必须以附加的反斜杠开头。但是,在替换中,特殊匹配变量,例如&$,不会引用当前匹配。
字符类由方括号 ([, ]) 分隔,并列出匹配中可能出现在该点的字符。/[ab]/ 表示 a 或 b,而 /ab/ 表示 a 后跟 b。
希望上面的定义清楚地说明了什么[aeiou]是。
括号可用于捕获. 后面可以用 n 引用第 n 组括号中的文本在模式中使用反向引用 \n; 在模式之外使用 MatchData[n]。
希望上面的定义清楚地说明了什么([aeiou])是。
([aeiou])- 字符类中的任何字符[..],将首先从字符串中找到"hello",是\1(即第一个捕获组)的值。在此示例中,值为\1,e将替换为<e>(如您定义的<\1>)。这就是使用方法"h<e>llo"从字符串生成的方式。helloString#sub
您发布的文档说
它可能包含对模式捕获组的反向引用,格式为“\d”,其中 d 是组号,或“\k”,其中 n 是组名。
所以\1匹配第一()组中捕获的任何内容,即其中一个,[aeiou]然后在替换中使用它<\1>