正则表达式
一 概述
1.什么是正则表达式?
正则表达式是用来判断字符串是否满足指定格式的表达式,是一门独立于编程语言的学科。
2.基本构成
正则表达式有一些具有特殊含义的字符构成,这些字符被叫做正则表达式的元字符:
元字符 | 含义 |
. | 任意一个字符 |
\d | 任意一个数字 |
\D | 任意一个非数字字符 |
\s | 任意一个空白字符 |
\S | 任意一个非空白字符 |
\w | 任意一个可用作标识符的字符,$除外 |
\W | 任意一个不可用作标识符的字符 |
- 如果正则表达式被双引号括起来,并且元字符前面没有加“\”,系统将元字符视作转义字符处理,找不到指定的转义字符,则报错,因此字符串形式的正则表达式元字符前面需要加“\”,非字符表达式形式不需要加。
- 在XML中,正则表达式的书写方式:<![CDATA[正则表达式(使用元字符)]]>。
- 在正则表达式中,如果需要使用“.”,则以“\\.”方式使用。
3.次数限定修饰符
限定字符出现的次数,用在字符后面:
符号 | 含义 |
? | 0次或者1次 |
+ | 1次或者多次 |
* | 0或多次 |
{n} | n次 |
{n,} | 至少n次 |
{n,m} | n-m次 |
4.首尾限定修饰符
必须以指定的字符开始或者结尾:
字符 | 含义 |
^a | 以a开头 |
a$ | 以a结尾 |
在正则表达式中,如果结尾限定了某种类型数据的出现次数,必须在结尾加上“$”,不然当在规定次数的字符后面出现其他字符时,也有可能验证通过,即限定结尾次数时必须加“$”。
5.列表限定修饰符
限定出现列表中任意一个元素,或者全部不出现:包含性限定修饰符与排他性限定修饰符。
字符 | 含义 |
[abc] | 代表a/b/c中任一个字符 |
[^abc] | 代表a/b/c中以外任一个字符 |
6.|
在正则表达式中可以使用|字符连接两种表达式形式,满足其中一种即满足。
二 正则表达式的应用
在一般java代码中判断字符是否符合给定的格式;
s.matches(res);
Pattern.matches(res,s);
在Scanner简单文本扫描器中,用来截取字符:
Scanner scanner=new Scanner(source).userDelimiter(String regex);//创建使用指定分隔符的简单文本扫描器 String s=scanner.next();//读取下一个字符(被分隔符包裹的部分就是字符)
在JavaScript中创建RegExp对象:
var regex=/正则表达式(使用元字符)/;
var regex=new RegExp("正则表达式");
var matching=regex.test(str);
不能仅仅停滞在实现上,应该去追求代价更小、性能更优的实现