您的位置:首页 > 其它

正则表达式中的特殊符号

2009-12-21 11:17 453 查看
正则表达式使用特殊符号。我将各种符号以及其意义和用法简单的介绍一下:

/ 表示在其后的文字是特殊符号。例:”n”和”n”是一致的。”/n”和换行符是一致的。
^ 和输入的开始一致。
$ 以它前面的字符结尾的;例如:ab+$就可以被“abb”,“ab”匹配;
* 与此符号之前的文字0次以上相同的话,两者一致。例:”zo*”和”zoo”,”z”都一致。
+ 与此符号之前的文字1次以上相同的话,两者一致。例:”zo*”和”zoo”一致,但和”z”不一致。
? 与此符号之前的文字0次或1次相同的话,两者一致。例:”a?ve?”和”never”的”ve”一致。
. 为通配符,表示任何一个字符,例如:“a.c”可以匹配“anc”、“abc”、“acc”;(与除了换行符的所有单一文字一致。)
| 或运算符,例如:a[n|bc|cb]c可以匹配“abcc”,“anc”,“acbc”;

(正则表达式) 以所指定的表达式寻找一致文字。如果找到了,储存下来。一致的部分可以从Match方法获得的阵列中找到。
x|y x和y的任意一方相同都会被认为一致。例:”(z|f)ood”和”zood”,”food”都一致。
{n} n是0以上的整数。与其前的文字n次相同的话,两者一致。例:”o{2}”和”Bob”中的”o”不一致,与”foooood”中的前两个”o”一致。
{n,} n是0以上的整数。与其之前的文字至少n次相同才一致。
{,n} n是0以上的整数。匹配n到无穷次之间任意次数。
{n,m} 两者整数。n至m范围的次数一致。
[xyz] 与中括号中的文字任意一个相同都被认为一致。
[^xyz] 与上面的相反。
[a-z] 文字的范围,从”a”到”z”的文字都被认为一致。
[^a-z] 与上面的相反。
[] 在[]内可以指定要求匹配的字符,例如:“a[nbc]c”可以匹配“anc”、“abc”、“acc;但不可以匹配“ancc”,a到z可以写成[a-z],0到9可以写成[0-9];

例如:
电话号码:024-84820482,02484820482(假设前面3或者4位,后面7或者8位,并且中间的减号可有可无)
都是符合规定的,那么可以用如下格式来匹配:[0-9]{3,4} /-? [0-9]{7,8};

-注意:“/”为转义字符,因为“-”在正则表达式用有代表一个范围的意义,例如:前面所说的[0-9],
所以它需要转义字符“/”进行转义才可使用;

/b 表示单词的末尾。例:”er/b”和”never”的”er”一致,但和”verb”的”er”不一致。
/B 表示非单词的末尾。
/d 表示数字。
/D 表示非数字。
/s 表示空格。
/S 表示非空格。
/w 表示所有字母数字。
/W 表示非所有字母数字。

解说:/d表示[0-9];/D表示[^0-9];/w表示[A-Z0-9];/W表示[^A-Z0-9];/s表示[/t/n/r/f],就是空格字符包括tab,空格等等;/S表示[^/t/n/r/f],就是非空格字符
i (忽略大小写) /* 注意点 */
g (全文查找出现的所有 pattern) /* 注意点 */
gi (全文查找、忽略大小写)/* 注意点 */
/num num应该被赋予一个正数。与已经储存的部分比较。例:”(.)/1″和任意的两个连续的相同
文字一致。
了解了这些之后看下面的注意点:
String s1=”111+222+333″;
System.out.println(s1.split(“+”).length);
//输出时提示错误:
java.util.regex.PatternSyntaxException: Dangling meta character ‘+’ near index
问题出现在加号附近,查询相关的资料显示,+、*、|、/等符号在正则表达示中有相应的不同意义。
需要这样:
String s1=”111+222+333″;
System.out.println(s1.split(“[+]“).length);
或是
String s1=”111+222+333″;
System.out.println(s1.split(“//+”).length);
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/benjaminwu198818/archive/2009/03/25/4023878.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: