写代码好歹也快一年多,但对user.rb里的format所用的正则表达式却是云里雾里的,说出去真的很丢脸。为了不在人前丢脸。这次好好的学习一下RUBY的正则表达式。
[注: 以下内容为转帖]
[注: 以下内容为转帖]
ruby 代码
[] 范围描述符 (比如,[a - z] 表示在a 到 z 范围内的一个字母) \w 字母或数字;相当于 [0-9A-Za-z] \W 非字母,数字 \s [ \t\n\r\f]空字符;相当于 [ \t\n\r\f] \S 非空字符 \d [0-9]数字;相当于 [0-9] \D 非数字字符 \b 退格符 (0x08) (仅在范围描述符内部时) \b 字边界(word boundary) (在范围描述符外部时) \B 非字边界 * 前面元素出现0或多次 + 前面元素出现1或多次 {m,n} 前面元素最少出现m次,最多出现n次 ? 前面元素最多出现1次;相当于 {0,1} | 与前面或后面的表达式匹配 () 群( grouping)
ruby 代码
- 字符类缩写
- 字符序列 [ ... ] 意思
- \d [0-9] 数字字符
- \D [^0-9] 非数字
- \s [\s\t\r\n\f] 空格字符
- \S [^\s\t\r\n\f] 非空格字符
- \w [A-Za-z0-9_] 单词符号
- \W [^A-Za-z0-9_] 非单词符号
- 重复
- r * 匹配0个或多个 r.
- r + 匹配1个或多个 r.
- r ? 匹配0个或1个 r.
- r {m,n} 匹配最少m个,最多n个 r.
- r {m,r} 匹配最少m个 r.
- 重复模式串尽可能匹配多的字符串,在其后面加一个问号“?”,让它匹配最少的。
- '|'匹配正则表达式中它左右两边模式中的一个。
基于模式的子串技术
String#sub 和 String#gsub 方法 寻找字符串中匹配它们第一个参数的那部分,然后把那部分用它们的第二个参数代替,前者只替换一次,后者替换所有的。另外一个版本的方法String#sub! 和 String#gsub! 会修改原始字符串。
第二个参数可以是字符串和程序块
子串函数中的转义字符
一些外加的转义字符用在字符串替换中:\&(最后那个匹配),\+(最后匹配的组),\`(匹配串前面的字符串),\'(匹配后面的字符串),\\(反斜杠)。
把一个斜杠变成两个斜杠的例子:
ruby 代码
- str.gsub(/\\/, '\\\\\\\\') 输出: "a\\b\\c"