胡言乱语

外包,CMM,Six Sigma,软件服务,软件开发,软件过程管理,软件质量,项目管理,企业管理

  博客园 :: 首页 :: 博问 :: 闪存 :: :: 联系 :: 订阅 订阅 :: 管理 ::

 规则表达式提供了这样一种机制, 我们可以用来从字符串中匹配特定字符串. 如今规则表达式已经是一个ISO标准.

规则表达式是一种内容无关的语法. 下面来解释它的一些基本操作符.

1. 字符匹配操作符
.  匹配任何一个字符. 如".ord"可以匹配"lord", "cord", "2ord"等等.
[] 匹配任何一个在中括弧中列出的字符. 如"[a-z]ord"可以匹配"aord", "bord", "ford"等等.
 如果在[]中使用-,就表示某个范围, 其前后两个字符号是范围的边界.
[^] 匹配任何一个不在中括弧中列出的字符. 如"[ab]ord"可以匹配"cord", "dord", 但不能匹配"aord", "bord".
 
2. 重复操作符
? 匹配任何字符一次,如果这个字符号存在的话. 如"?erd"可以匹配"erd","aerd","berd"等等.
* 匹配声明的字符零到多次. 如“n.*rd” 可以匹配“nerd”, “nrd”, “neard”等等.
+ 匹配声明的字符至少一次. 如“[n]+erd” 可以匹配“nerd”, “nnerd”,但不能匹配“erd”.
{n} 匹配声明的字符n次. 如“[a-z]{2}erd” 可以匹配“cherd”, “blerd”, etc. but not “nerd”, “erd”, “buzzerd”.
{n,} 匹配声明的字符至少n次. 如“.{2,}erd” 可以匹配“cherd” and “buzzerd”, 但不能匹配“nerd”.
{n,m} 匹配声明的字符n到m次. 如“n[e]{1,2}rd” 可以匹配“nerd” and “neerd”.

3. 定位操作符
^ 一行的开始位置
$ 一行的结束位置
\< 某个单词的开始位置
\> 某个单词的结束位置
\b 某个单词的开始位置 或者 结束位置
\B 某个单词的中间位置

4. 组合操作符
() 表示()内是几个规则表达式的组合. 如“([a]|[]b)erd"匹配"aerd","berd".

交替操作符
| 匹配|前后两组规则表达式. 如“([a]|[]b)erd"匹配"aerd","berd".

保留字
以下这些字符在规则表达式语法中是有特殊意义的字符,不能被直接当字符来使用. 这些字符被称为保留字.
^ (carat)
. (period)
[ (left bracket} 
] (right bracket}
$ (dollar sign)
( (left parenthesis)
) (right parenthesis)
| (pipe)
* (asterisk)
+ (plus symbol)
? (question mark)
{ (left curly bracket, or left brace)
} (right curly bracket, or right brace)
\ backslash
如果想使用保留字作为实际字符来使用,需要在该保留字前面加反斜线blackslash(\)

在一些unix工具中,一般用正斜杠slash(/)包围所描述的规则表达式,如[A-Z]+(abc|xyz)*/
某些规则表达式工具或某些语言中还定义了一些转义的字符,比如\w 代表空白字符,\d 代表数字,就相当于定义了[ ]和[0-9]的快捷方式. 当使用具体大工具或语言的规则表达式时,要去了解这些特定的定义.

下面以Java中规则表达式为例, 演示如何在Java中使用规则表达式.
1. 匹配字符串是否 
    Pattern.mateches("[[0-9]{2}","00");  #return true
    Pattern.mateches("[[0-9]{2}","a00");  #return false
    Pattern.mateches("[[a-z0-9]*","a00");  #return true

posted on 2005-09-02 16:35  台风  阅读(871)  评论(0编辑  收藏  举报