Ruby gsub/regex修饰符?

Bla*_*ine 12 ruby regex

我在哪里可以找到关于修饰符的文档gsub?\ a\b\c\1\2\3%a%b%c $ 1 $ 2%3等?

具体来说,我正在看这段代码...... something.gsub(/%u/, unit)那是什么%u

mix*_*nic 11

首先,%u红宝石正则表达式没什么特别之处:

mixonic@pandora ~ $ irb
irb(main):001:0> '%u'.gsub(/%u/,'heyhey')
=> "heyhey"
Run Code Online (Sandbox Code Playgroud)

Ruby 1.8 regex的权威文档在Ruby Doc Bundle中:

由斜杠分隔的字符串是正则表达式.紧接在后一个斜杠之后的字符表示正则表达式的选项.选项i表示正则表达式不区分大小写.选项i表示正则表达式在第一次计算时只执行一次表达式替换.选项x表示扩展正则表达式,这意味着表达式中允许使用空格和共数.选项p表示POSIX模式,其中换行被视为普通字符(与点匹配).

%r/STRING /是正则表达式的另一种形式.

^
    beginning of a line or string 
$
    end of a line or string 
.
    any character except newline 
\w
    word character[0-9A-Za-z_] 
\W
    non-word character 
\s
    whitespace character[ \t\n\r\f] 
\S
    non-whitespace character 
\d
    digit, same as[0-9] 
\D
    non-digit 
\A
    beginning of a string 
\Z
    end of a string, or before newline at the end 
\z
    end of a string 
\b
    word boundary(outside[]only) 
\B
    non-word boundary 
\b
    backspace(0x08)(inside[]only) 
[ ]
    any single character of set 
*
    0 or more previous regular expression 
*?
    0 or more previous regular expression(non greedy) 
+
    1 or more previous regular expression 
+?
    1 or more previous regular expression(non greedy) 
{m,n}
    at least m but most n previous regular expression 
{m,n}?
    at least m but most n previous regular expression(non greedy) 
?
    0 or 1 previous regular expression 
|
    alternation 
( )
    grouping regular expressions 
(?# )
    comment 
(?: )
    grouping without backreferences 
(?= )
    zero-width positive look-ahead assertion 
(?! )
    zero-width negative look-ahead assertion 
(?ix-ix)
    turns on (or off) `i' and `x' options within regular expression.
Run Code Online (Sandbox Code Playgroud)

这些修饰符位于封闭组(如果有)内.(?ix-ix :) i' and在此非捕获组中打开(或关闭)x'选项.

正则表达式中提供反斜杠表示法和表达式替换.

祝好运!

  • %u没什么特别的 - 尝试IRB中的代码:'%u'.gsub(/%u /,'heyhey')#=>"heyhey".gsub正在查找字符串'%u'并将其替换为第二个参数,在此示例中为'heyhey'. (3认同)

sep*_*p2k 9

Zenspider的Quickref包含一个部分,说明可以在regexen中使用哪些转义序列,以及一个列出由regexp匹配设置的伪变量的部分.在gsub的第二个参数中,您只需使用反斜杠而不是$来编写变量的名称,并在应用regexp后将其替换为该变量的值.如果使用双引号字符串,则需要使用两个反斜杠.

使用gsub的块形式时,您可以直接使用变量.如果从块中返回包含例如\ 1的字符串,则不会被$ 1替换.只有在使用双参数形式时才会发生这种情况.


Sta*_*tan 5

如果你在sub/gsub中使用block,你可以访问这样的组:

>> rx = /(ab(cd)ef)/
>> s = "-abcdef-abcdef"
>> s.gsub(rx) { $2 }
=> "cdgh-cdghi"
Run Code Online (Sandbox Code Playgroud)