Ruby正则表达式
Ruby正则表达式 | 菜鸟教程
正则在线工具
正则表达式库
正则表达式
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
正则表达式基本语法
两个特殊的符号’^‘和’$'。他们的作用是分别指出一个字符串的开始和结束。
模式 | 描述 |
---|---|
^ | 匹配行的开头。 |
$ | 匹配行的结尾。 |
- “^in”:表示所有以"in"开始的字符串
- “ion$”:表示所以以"ion"结尾的字符串
- “^tion$”:表示开始和结尾都是"tion"的字符串——此时只有"tion"自己了;
- “tion”:表示任何包含"tion"的字符串。
其它还有’*‘,’+‘和’?'这三个符号,表示一个或一序列字符重复出现的次数。它们分别表示“零次或多次”,“一次或多次”还有“零次或一次”。
模式 | 描述 |
---|---|
re* | 匹配前面的子表达式零次或多次。 |
re+ | 匹配前面的子表达式一次或多次。 |
re? | 匹配前面的子表达式零次或一次。 |
- “er*”:表示一个字符串有一个e后面跟着零个或若干个r。(“e”, “er”, “errr”,……);
- “er+”:表示一个字符串有一个e后面跟着至少一个r或者更多(“er”, “err”, “errr”,……);
- “er?”:表示一个字符串有一个e后面跟着零个或者一个r(“e”, “er”);
- “e?r+$”:表示在字符串的末尾有零个或一个e跟着一个或几个r。
也可以使用范围,用大括号括起,用以表示重复次数的范围。
“ab{2}”:表示一个字符串有一个a跟着2个b(“abb”);
“ab{2,}”:表示一个字符串有一个a跟着至少2个b;
“ab{3,5}”:表示一个字符串有一个a跟着3到5个b。
!注意:必须指定范围的下限(如:“{0,2}“而不是”{,2}”)
‘*’,'+‘和’?'相当于"{0,}“,”{1,}“和”{0,1}"
模式 | 描述 |
---|---|
. | 匹配除了换行符以外的任意单字符。使用 m 选项时,它也可以匹配换行符。 |
/./m | 在多行模式下,也能匹配换行符 |
a| b | 匹配 a 或 b。 |
(re) | 对正则表达式进行分组,并记住匹配文本。 |
- “tion|sion”:表示一个字符串里有"tion"或者"sion";
- “(at|s)ion”:表示"ation"或"sion;
- “(a|o)*m”:表示一串"a"“o"混合的字符串后面跟零个或若干个"m”;
- “^.{10}$”:表示有任意十个字符的字符串(长度为10个字符);
模式 | 描述 |
---|---|
[…] | 匹配在方括号中的任意单字符。 |
[^…] | 匹配不在方括号中的任意单字符。 |
/[Rr]uby/ | 匹配 “Ruby” 或 “ruby” |
/rub[ye]/ | 匹配 “ruby” 或 “rube” |
/[aeiou]/ | 匹配任何一个小写元音字母 |
/[0-9]/ | 匹配任何一个数字,与 /[0123456789]/ 相同 |
/\\d/ | 匹配一个数字,等同于 /[0-9]/ |
/\\D/ | 匹配一个非数字,等同于 /[^0-9]/ |
/[a-z]/ | 匹配任何一个小写 ASCII 字母 |
/[A-Z]/ | 匹配任何一个大写 ASCII 字母 |
/[a-zA-Z0-9]/ | 匹配任何一个括号内的字符 |
/\\w/ | 匹配一个单词字符,等同于 /[A-Za-z0-9_]/ |
/\\W/ | 匹配一个非单词字符,等同于 /[^A-Za-z0-9_]/ |
!注意:可以在方括号里用’^‘表示不希望出现的字符,’^‘应在方括号里的第一位。
为了逐字表达,你必须在"^.$()|*+?{"这些字符前加上转义字符’'。
在方括号中,不需要转义字符
符号的组合运用
?=用法
exp1(?=exp2):查找exp1后面是exp2的exp1。
?<=用法
(?<=exp2)exp1:查找exp1前面是exp2的exp1。
?!用法
exp1(?!exp2):查找exp1后面不是exp2的exp1。
?<!用法
(?<!exp2)exp1:查找exp1前面不是exp2的exp1。