提供了这样一种机制,我们可以用来从字符串中匹配特定字符串。如今规则表达式已经是一个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。但不能匹配“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某个单词的中间位置
4、组合操作符
()表示()内是几个规则表达式的组合。如“([a]|[]b)erd"匹配"aerd","berd"。
5、交替操作符
|匹配|前后两组规则表达式。如“([a]|[b])erd"匹配"aerd","berd"。
6、保留字
以下这些字符在规则表达式语法中是有特殊意义的字符,不能被直接当字符来使用。这些字符被称为保留字。
^(carat)
。(period)
[(leftbracket}
](rightbracket}
$(dollarsign)
((leftparenthesis)
)(rightparenthesis)
|(pipe)
*(asterisk)
+(plussymbol)
?(questionmark)
{(leftcurlybracket,orleftbrace)
}(rightcurlybracket,orrightbrace)
ackslash
如果想使用保留字作为实际字符来使用,需要在该保留字前面加反斜线blackslash()
在一些unix工具中,一般用正斜杠slash(/)包围所描述的规则表达式,如[A-Z]+(abc|xyz)*/
某些规则表达式工具或某些语言中还定义了一些转义的字符,比如w代表空白字符,d代表数字,就相当于定义了[]和[0-9]的快捷方式。当使用具体大工具或语言的规则表达式时,要去了解这些特定的定义。
下面以Java中规则表达式为例,演示如何在Java中使用规则表达式。
1、匹配字符串是否
Pattern。mateches("[[0-9]{2}","00");#returntrue
Pattern。mateches("[[0-9]{2}","a00");#returnfalse
Pattern。mateches("[[a-z0-9]*","a00");#returntrue