12
votes

Motificateurs Ruby Gsub / Regex?

Où puis-je trouver la documentation sur les modificateurs de gsub ? \ A \ b \ c \ 1 \ 2 \ 3% A% B% 1 $ C $ 1 2% 3, etc.?

Spécialement, je regarde ce code ... quelque chose.gsub (/% u /, unité) Quel est le % u


0 commentaires

5 Réponses :


9
votes

ZensPider's QuickRef contient une section expliquant Quelles séquences d'échappement peuvent être utilisées dans Regexen et une liste des pseudo variables qui sont définies par un match Regexp . Dans le deuxième argument de GSUB, vous écrivez simplement le nom de la variable avec une barre oblique inverse au lieu d'un $ et il sera remplacé par la valeur de cette variable après avoir appliqué le Regexp. Si vous utilisez une chaîne cotée double, vous devez utiliser deux backslashes.

Lorsque vous utilisez la forme de bloc de GSUB, vous pouvez simplement utiliser les variables directement. Si vous retournez une chaîne contenant par ex. \ 1 du bloc, qui ne sera pas remplacé par 1 $. Cela ne se produit que lorsque vous utilisez la forme à deux arguments.


2 commentaires

Je regarde ce code ... .gsub (/% u /, unité) Quel est le% U? Je ne peux pas sembler trouver% u dans votre docs et l'explication du% n'est pas claire pour moi. Merci!


Le% U est un signe pour cent suivi de la lettre u. Il n'a aucune signification particulière dans Regexen, alors je suppose que le texte contient littéralement cette séquence.



11
votes

Tout d'abord, % u code> n'est rien spécial dans Ruby Regex:

^
    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.
  • http: // ruby- doc.org/docs/ruby-doc-bundle/manual/man-1.4/syntax.html#regexp li> ul>

    Les cordes délimitées par des barres obliques sont expressions régulières. Les personnages juste après ce dernier slash dénote le option à l'expression régulière. OPTION I signifie que l'expression régulière est insensible à la casse. OPTION I signifie Cette expression régulière fait Substitution d'expression une seule fois à la première fois qu'il a évalué. Option x signifie expression régulière étendue, ce qui signifie blouses et commencent sont autorisés dans l'expression. Option p désigne le mode POSIX, dans lequel les nouvelles lignes sont traités comme un caractère normal (matchs avec points). P>

    Le% R / String / est l'autre forme de l'expression régulière. p>

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


2 commentaires

Je regarde ce code ... .gsub (/% u /, unité) Quel est le% U? Je ne peux pas sembler trouver% u dans votre docs et l'explication du% n'est pas claire pour moi. Merci!


% U n'est rien de spécial - essayez le code dans irb: '% u'.gsub (/% u /,' heyhey ') # => "heyhey". GSUB recherche une chaîne '% U' et le remplaçant avec le deuxième argument, «Heyhey» dans cet exemple.



1
votes

pour Ruby 1.9's Oniguruma Il existe une bonne documentation de l'expression régulière ici .


0 commentaires

5
votes

Si vous utilisez un bloc dans SUB / GSUB, vous pouvez accéder aux groupes comme celui-ci:

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


0 commentaires

0
votes

gsub est également une fonction de substitution de chaîne dans la langue de LUA.

Dans le LUA regex langue% u représente la classe de caractères majuscules. à-dire qu'elle correspondra à toutes les lettres majuscules. De même% correspondra à l minuscule.

LUA Regex classe modèles


0 commentaires