Java总结-正则表达式
正则表达式:
专门用于操作字符串的规则。
将一些操作代码通过一些符号体现。
好处:
1,方便了程序的编写。
2,可以用于对字符串的复杂操作。
弊端:
阅读性较差。
常用规则:
[]:限定某一位字符内容范围。
比如: [abc]:该位字符只能出现a或者b或者c。
[a-z]:改为字符只要是小写字母中的一个即可。
{}:限定前一个字符或者正则规则内容出现的次数。
比如: {3}:出现3次。
{3,}:至少出现3次。
{3,7}:出现3到7次。
数量规则:
?:出现一次或者0次。
* :出现了0次或者多次。
+ :出现1次或者多次。
字符规则:
\d: [0-9],数字。
\D: [^0-9],非数字。
\w: [a-zA-Z0-9_]
\b: 单词边界。
\s: 空格,tab,\r \n.
组规则:
可以将正则表达式的结果通过()进行封装,以便于该规则内容被重用
技巧:当出现了嵌套组的时候,通过左括号来进行编号的判断。该编号从1开始。
如果使用已定好的组呢?
通过\n形式,反向引用组。()\\1+。
特殊:
$ : 代表是行结束。
^ : 行开始。
. : 代表任意字符。
--------
对字符串操作的常见功能。
1,匹配。String matches(regex);其实最终使用的是Matcher匹配器对象。
需求:判断QQ号码。5~15 0不可以开头。
qq.matches("[1-9]\\d{4,14}");
2,切割:String split(regex);
需求:如果想通过 . 的形式起个字符串。
split("\\.");
3,替换:String replaceAll(regex,str);
在regex表达式中使用了组。那么可以在str中的通过 $编号 的形式获取regex中的组。
需求:如果想将符合规则的内容替换成一个$符号。
replaceAll(regex,"\\$");
需求:替换叠词,用叠词中的一个替换全部。
s.replaceAll("(.)\\1+","$1");
4,查找:涉及到java.util.regex包中两个对象。Pattern ,Matcher。
1,将正则规则封装成Pattern对象。Pattern p = Pattern.compile(regex);
2,将规则对象和要作用的字符串相关联,获取匹配器对象。Matcher m = p.matcher(str);
3,通过匹配器对象find()将规则去操作字符串,如果找到返回true。
在通过group()方法获取找到符合规则的内容。
练习:
1,获取一段英文有三个字母组成的单词。
2,操作一组ip地址,按ip地址顺序排序。
3,Email规则。/*[a-zA-Z0-9_]*/ "\\w{6,12}@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+"
4,网页爬虫。
遍历网页中的文本,将符合规则的信息获取。
应用场景:
注册表单的校验。
专门用于操作字符串的规则。
将一些操作代码通过一些符号体现。
好处:
1,方便了程序的编写。
2,可以用于对字符串的复杂操作。
弊端:
阅读性较差。
常用规则:
[]:限定某一位字符内容范围。
比如: [abc]:该位字符只能出现a或者b或者c。
[a-z]:改为字符只要是小写字母中的一个即可。
{}:限定前一个字符或者正则规则内容出现的次数。
比如: {3}:出现3次。
{3,}:至少出现3次。
{3,7}:出现3到7次。
数量规则:
?:出现一次或者0次。
* :出现了0次或者多次。
+ :出现1次或者多次。
字符规则:
\d: [0-9],数字。
\D: [^0-9],非数字。
\w: [a-zA-Z0-9_]
\b: 单词边界。
\s: 空格,tab,\r \n.
组规则:
可以将正则表达式的结果通过()进行封装,以便于该规则内容被重用
技巧:当出现了嵌套组的时候,通过左括号来进行编号的判断。该编号从1开始。
如果使用已定好的组呢?
通过\n形式,反向引用组。()\\1+。
特殊:
$ : 代表是行结束。
^ : 行开始。
. : 代表任意字符。
--------
对字符串操作的常见功能。
1,匹配。String matches(regex);其实最终使用的是Matcher匹配器对象。
需求:判断QQ号码。5~15 0不可以开头。
qq.matches("[1-9]\\d{4,14}");
2,切割:String split(regex);
需求:如果想通过 . 的形式起个字符串。
split("\\.");
3,替换:String replaceAll(regex,str);
在regex表达式中使用了组。那么可以在str中的通过 $编号 的形式获取regex中的组。
需求:如果想将符合规则的内容替换成一个$符号。
replaceAll(regex,"\\$");
需求:替换叠词,用叠词中的一个替换全部。
s.replaceAll("(.)\\1+","$1");
4,查找:涉及到java.util.regex包中两个对象。Pattern ,Matcher。
1,将正则规则封装成Pattern对象。Pattern p = Pattern.compile(regex);
2,将规则对象和要作用的字符串相关联,获取匹配器对象。Matcher m = p.matcher(str);
3,通过匹配器对象find()将规则去操作字符串,如果找到返回true。
在通过group()方法获取找到符合规则的内容。
练习:
1,获取一段英文有三个字母组成的单词。
2,操作一组ip地址,按ip地址顺序排序。
3,Email规则。/*[a-zA-Z0-9_]*/ "\\w{6,12}@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+"
4,网页爬虫。
遍历网页中的文本,将符合规则的信息获取。
应用场景:
注册表单的校验。