Ruby 正则使用方法简单的整理

sunshineboy · 2017年03月17日 · 最后由 sunshineboy 回复于 2017年03月20日 · 2080 次阅读
1.创建正则

one: re = Regexp.new("Ruby")

two: re = /Ruby/

three: re = %r(Ruby)、%r<Ruby>、%r|Ruby|、%r!Ruby!

2.正则模式匹配 (索引从 0 开始)

one: 模式 ~= 字符串

two: 模式 != 字符串

3.匹配模式
普通字符 /Ruby/
行首/末 ^ $ 元字符
字符串首/末 \A \z 元字符
指定匹配范围 [a-z] a 到 z 字符
[^a-z] a 到 z 以外字符
匹配符 . 匹配任意字符
/^.&/ 匹配字符数为 1 的行
\s 空白符,匹配空格、制表符、换行符、换页符
\d 匹配 0~9
\w 匹配英文字母与数字 [a-zA-Z_0-9]
转义 \
* 重复 0 次或更多次
+ 重复 1 次或更多次
? 重复 0 次或 1 次
*? (重复 0 次或更多次) 重复中最短部分
+? (重复 1 次或更多次) 重复中最短部分
() 重复匹配
候补任选
quote 转义正则表达式中所有元字符
/x/ i 忽略英文字母大小写
/x/ x 忽略空白符及#后面字符 (方便写注释)
/x/ m 可用。匹配换行符
() 捕获 ($n获取相对应的值)
(?:) 过滤不需要捕获的值
4.小试牛刀 (涉及贪婪匹配和懒惰匹配)

/(.)(\d\d)+(.)/ =~ "1234567" 与/(.)(\d\d)+/ =~ "1234567" $1 $2 $3值的区别?

/(.)(?:\d\d)+(.)/ =~ "123456" $1 $2 $3值?

sunshineboy 关闭了讨论。 10月19日 10:55
sunshineboy 重新开启了讨论。 10月19日 10:55
需要 登录 后方可回复, 如果你还没有账号请 注册新账号