显示标签为“\A”的博文。显示所有博文
显示标签为“\A”的博文。显示所有博文

2009年5月16日星期六

正则表达式模式

表达式

可匹配

\A 匹配字符串的开始
\b 匹配词边界
\B 匹配埋词边界
\d 匹配0~9 中的任意一个数字
\D 匹配所有的非数字字符
\n 匹配换行符
\r 匹配回车
\s

匹配空格、制表符等空白字符的其中任意一个字符

\S 匹配所有非空白字符("\s" 可匹配各个空白字符)
\t

匹配制表符

\w

匹配字母或数字或下划线: A~Z, a~z, 0~9, _

\W 匹配所有的字母、数字、下划线以外的一个字符
\z 匹配字符串的结尾
\Z 如果字符串以\n结尾,那么匹配\n前面的那个字符
+ 匹配1个或多个
* 匹配0个或多个
{m,n} 匹配最少 m 个最多 n 个
{m,} 匹配最少 m 个
{m} 匹配刚好 m 个
[] 匹配其中任意一个字符
[^] 匹配其中字符之外的任意一个字符
()

(1). 在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰。(2). 取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到

m|n 匹配 m 或者 n 。 | 的优先级很低
.

匹配除了换行符(\n)以外的任意一个字符

^ 匹配行首。要匹配 "^" 字符本身,请使用 "\^"
$ 匹配行尾
- 区间符。例 a-z , 从a到z之之间的所有字母
\ 匹配
? 匹配

2009年5月3日星期日

从首字符或尾字符开始的查找

在 Ruby 的正则表达式中, "首字符" 为 \A, "尾字符" 为 \z(注意z是小写字符)


p (/\Aa/ =~ "aiueo")    #=> 0
p (/\Ao/ =~ "aiueo")    #=> nil
p (/a\z/ =~ "aiueo")    #=> nil
p (/o\z/ =~ "aiueo")    #=> 4


注:
    我们经常会在正则表达式中看到, ^ 和 $ 运算符. 它们分别表示为 行首 和 行末.


p "abc\ndef\nghi\n".slice(/..$/m)    #=> "bc"
p "abc\ndef\nghi\n".slice(/..\Z/m)    #=> "hi"
p "abc\ndef\nghi\n".slice(/..\z/m)    #=> "i\n"


??:
    /../m 在 Ruby 的正则表达式中, m 为多行检索时,换行符会被看做普通字符来处理.
    \Z 在 Ruby 的正则表达式中, 表示字符串中的行末.