beast1.0 解读(三)

写代码好歹也快一年多,但对user.rb里的format所用的正则表达式却是云里雾里的,说出去真的很丢脸。为了不在人前丢脸。这次好好的学习一下RUBY的正则表达式。
[注: 以下内容为转帖]
ruby 代码
  1. []  范围描述符 (比如,[a - z] 表示在a 到 z 范围内的一个字母)    
  2.   
  3. \w  字母或数字;相当于 [0-9A-Za-z]   
  4.   
  5. \W  非字母,数字   
  6.   
  7. \s  [ \t\n\r\f]空字符;相当于 [ \t\n\r\f]   
  8.   
  9. \S  非空字符   
  10.   
  11. \d  [0-9]数字;相当于 [0-9]   
  12.   
  13. \D  非数字字符   
  14.   
  15. \b  退格符 (0x08) (仅在范围描述符内部时)   
  16.   
  17. \b  字边界(word boundary) (在范围描述符外部时)   
  18.   
  19. \B  非字边界   
  20.   
  21. *  前面元素出现0或多次   
  22.   
  23. +  前面元素出现1或多次   
  24.   
  25. {m,n}  前面元素最少出现m次,最多出现n次   
  26.   
  27. ?  前面元素最多出现1次;相当于 {0,1}   
  28.   
  29. |  与前面或后面的表达式匹配   
  30.   
  31. ()  群( grouping)   

ruby 代码
  1. 字符类缩写   
  2. 字符序列 [ ... ] 意思   
  3. \d [0-9] 数字字符   
  4. \D [^0-9] 非数字   
  5. \s [\s\t\r\n\f] 空格字符   
  6. \S [^\s\t\r\n\f] 非空格字符   
  7. \w [A-Za-z0-9_] 单词符号   
  8. \W [^A-Za-z0-9_] 非单词符号   
  9.   
  10. 重复   
  11. r * 匹配0个或多个 r.   
  12. r + 匹配1个或多个 r.   
  13. r ? 匹配0个或1个 r.   
  14. r {m,n} 匹配最少m个,最多n个 r.   
  15. r {m,r} 匹配最少m个 r.   
  16. 重复模式串尽可能匹配多的字符串,在其后面加一个问号“?”,让它匹配最少的。   
  17. '|'匹配正则表达式中它左右两边模式中的一个。   

基于模式的子串技术
String#sub 和 String#gsub 方法 寻找字符串中匹配它们第一个参数的那部分,然后把那部分用它们的第二个参数代替,前者只替换一次,后者替换所有的。另外一个版本的方法String#sub! 和 String#gsub! 会修改原始字符串。
第二个参数可以是字符串和程序块

子串函数中的转义字符
一些外加的转义字符用在字符串替换中:\&(最后那个匹配),\+(最后匹配的组),\`(匹配串前面的字符串),\'(匹配后面的字符串),\\(反斜杠)。
把一个斜杠变成两个斜杠的例子:

ruby 代码
 
  1. str.gsub(/\\/, '\\\\\\\\')   输出: "a\\b\\c"     

你可能感兴趣的:(C++,c,正则表达式,F#,Ruby)