正则表达式
发布时间:2020-12-13 19:48:30 所属栏目:百科 来源:网络整理
导读:0. 正则表达式: 符合一定规则的表达式. 用于专门操作字符串. 1. 用到的类 java.lang.String和java.util.regex. 2. 用String的matches()方法的栗子: /* * 判断QQ号是否合法. * */public class RegexDemo {public static void main(String[] args) {checkQQ();
0. 正则表达式: 符合一定规则的表达式. 用于专门操作字符串.
1. 用到的类java.lang.String和java.util.regex.
2. 用String的matches()方法的栗子: /* * 判断QQ号是否合法. * */ public class RegexDemo { public static void main(String[] args) { checkQQ(); } public static void checkQQ() { String qq = "12325925a2"; String regex = "[1-9][0-9]{4,14}"; //定义匹配规则 boolean flag = qq.matches(regex); if(flag) System.out.println(qq+"...is ok"); else System.out.println(qq+"...wrong!!"); } }
3. 正则的功能: 匹配、切割、替换、获取等 4. 匹配功能: String.matches()方法.
代表
n 代表换行
...等等...
[abc] 代表a或b或c (可以是数字)
[^abc] 代表除a,b,c以外的
[a-zA-Z] 代表a到z和A到Z并集
. 代表任意字符
d 数字[0-9]
D 除0到9
s 代表空白字符,[ tnx0Bfr]
S 非空白字符
w 单词字符[a-zA-Z0-9]
W 代表[^w]
X? 代表X出现一次或没有
X*? 出现零次或多次
X+? 代表X出现一次或多次
X{n} 出现n次
X{n,} 出现最少n次
5. 切割功能: String的split()方法.
(.)1 用小括号括起来表示组,编号从左到右从1开始(组0代表整个表达式). 1表示第一组所匹配过的再次出现.
例如: "sdfqqKjljkksdzz".split("(.)1") 可以将字符串从qq,kk,zz处分割.
6. 替换功能: String的replaceAll()方法和replaceFirst().
"abccdeffg".replaceAll("(.)1","$1"); 得到"abcdefg"字符串. $符号表示取前一个正则表达式的组.
7. 获取功能:
8. 取出长为3的单词的例子:
import java.util.regex.*; class RegexDemo2 { public static void main(String[] args) { getDemo(); } // 获取长为三的单词. public static void getDemo() { String str = "ming tian jiu yao fang jia le,da jia. "; String reg = "b[a-zA-Z]{3}b"; Pattern p = Pattern.compile(reg); Matcher m = p.matcher(str); while(m.find()) { System.out.println(m.group()); System.out.println(m.start()+"...."+m.end()); } } }
9. 这个讲正则的,虽然是Python语言中的正则应用,但是大部分内容还是同样适用的.
http://wiki.ubuntu.org.cn/Python%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%93%8D%E4%BD%9C%E6%8C%87%E5%8D%97
10.Jamie Zawinski说: Some people,when confronted with a problem,think "I know,I'll use regular expressions." Now they have two problems. 当一个人遇到问题的时候想:"我用正则就能解决",好吧,现在他们一共有俩问题了. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |