1

我正在读这个,我不明白。我有两个问题。

([aeiou])和有什么区别[aeiou]

是什么<\1>意思?

"hello".sub(/([aeiou])/, '<\1>')             #=> "h<e>llo"
4

2 回答 2

4

这里记录了:

如果替换是一个字符串,它将被替换为匹配的文本。它可能包含对模式捕获组的反向引用,形式为"\d",其中d是组号,或者"\k<n>",其中n是组名。如果它是双引号字符串,则两个反向引用都必须以附加的反斜杠开头。但是,在替换中,特殊匹配变量,例如&$,不会引用当前匹配。

字符类

字符类由方括号 ([, ]) 分隔,并列出匹配中可能出现在该点的字符。/[ab]/ 表示 a 或 b,而 /ab/ 表示 a 后跟 b。

希望上面的定义清楚地说明了什么[aeiou]是。

捕获

括号可用于捕获. 后面可以用 n 引用第 n 组括号中文本在模式中使用反向引用 \n; 在模式之外使用 MatchData[n]。

希望上面的定义清楚地说明了什么([aeiou])是。

([aeiou])- 字符类中的任何字符[..],将首先从字符串中找到"hello",是\1(即第一个捕获组)的值。在此示例中,值为\1e将替换为<e>(如您定义的<\1>)。这就是使用方法"h<e>llo"从字符串生成的方式。helloString#sub

于 2013-11-10T12:53:05.863 回答
4

您发布的文档说

它可能包含对模式捕获组的反向引用,格式为“\d”,其中 d 是组号,或“\k”,其中 n 是组名。

所以\1匹配第一()组中捕获的任何内容,即其中一个,[aeiou]然后在替换中使用它<\1>

于 2013-11-10T12:55:37.337 回答