String
1:trim():去掉字符串头尾的空格
2:split(String regex):将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组
三:matchs(String regex).判断字符串是否匹配输入的字符串
作用:
从一个字符串中查找符合某种规则的字符串,使用Pattern和Matcher类
判断一个字符串是否符合某种规则。 matchs(String regex)方法:判断字符串是否符合正则表达式(即参数regex是一个正则表达式)的描述
按照某种规则替换字符串中的内容。 replaceAll(String regex,String replacement)方法,找到字符串符合正则表达式(即参数regex)描述的所有字符串,并用replacement字符串替换掉(注意:replacement参数不是正则表达式)。
1:能够匹配多种字符的表达式
\d : 任意一个从0到9的数字
\D:任意除0-9之外的字符
\s:任意空白字符(空格、换行等等)
\S:任意非空白字符
. :任意字符
\w:任意字母或数字或下划线,即a-z,A-Z,0-9或_
如:查找所有的数字,并标出他们的位置
String s = "1234567world.text99";
Pattern pattern = Pattern.compile("\\d");
Matcher matcher = pattern.matcher(s);
while(matcher.find()){
String value = matcher.group();
System.out.println(value+"("+matcher.start()+","+matcher.end()+")");
}
结果:
1(0,1)
2(1,2)
3(2,3)
4(3,4)
5(4,5)
6(5,6)
7(6,7)
9(17,18)
9(18,19)
2:使用[]包好系列字符,能匹配其中之一;使用[^]包含系列字符,不匹配其中任意一个字符
3:修饰匹配次数
? 0次或1次
* 0次或多次
+ 1次或多次
{n} n次
{n,} 至少n次
{n,m} 至少n次,但不大于m次
4:匹配字符串开头和结尾的特殊字符
^hello 字符串必须hello开头
hello$ 字符串必须hello结尾
5:表示“或”关系的符号“|”
6:分组符号“()”
可以对()内的表达式修饰起次数
想要对某个搜索结果分组获取其值的时候也用分组符号
7:贪婪模式:尽可能多地匹配
贪婪模式只匹配一次
String s = "<table>"+
"<tr>"+
"<td>java</td>"+
"<td>sun</td>"+
"<td>orcal</td>"+
"</tr>"+
"<tr>"+
"<td>c#<td>"+
"<td>microsoft</td>"+
"<td>unkown</td>"+
"/tr"+
"</table>"
;
/*贪婪模式分组
* 表达式分成两组
* 第0组:<td>(.*?)<td>,即整个表达式
* 第1组:(.*?)*/
Pattern pattern = Pattern.compile("<td>.*</td>");
Matcher matcher = pattern.matcher(s);
while(matcher.find()){
String value = matcher.group();
System.out.println(value+"("+matcher.start()+","+matcher.end()+")");
}
结果:<td>java</td><td>sun</td><td>orcal</td></tr><tr><td>c#<td><td>microsoft</td><td>unkown</td>(11,102)
非贪婪模式:尽可能少地匹配
String s = "<table>"+
"<tr>"+
"<td>java</td>"+
"<td>sun</td>"+
"<td>orcal</td>"+
"</tr>"+
"<tr>"+
"<td>c#<td>"+
"<td>microsoft</td>"+
"<td>unkown</td>"+
"/tr"+
"</table>"
;
/*贪婪模式分组
* 表达式分成两组
* 第0组:<td>(.*?)<td>,即整个表达式
* 第1组:(.*?)*/
Pattern pattern = Pattern.compile("<td>(.*?)</td>");
Matcher matcher = pattern.matcher(s);
while(matcher.find()){
String value = matcher.group();
System.out.println(value+"("+matcher.start()+","+matcher.end()+")");
}
结果:
<td>java</td>(11,24)
<td>sun</td>(24,36)
<td>orcal</td>(36,50)
<td>c#<td><td>microsoft</td>(59,87)
<td>unkown</td>(87,102)
加入分组选择:
String s = "<table>"+
"<tr>"+
"<td>java</td>"+
"<td>sun</td>"+
"<td>orcal</td>"+
"</tr>"+
"<tr>"+
"<td>c#</td>"+
"<td>microsoft</td>"+
"<td>unkown</td>"+
"/tr"+
"</table>"
;
/*贪婪模式分组
* 表达式分成两组
* 第0组:<td>(.*?)<td>,即整个表达式
* 第1组:(.*?)*/
Pattern pattern = Pattern.compile("<td>(.*?)</td>");
Matcher matcher = pattern.matcher(s);
while(matcher.find()){
String value = matcher.group(1);
System.out.println(value+"("+matcher.start()+","+matcher.end()+")");
}
结果:
java(11,24)
sun(24,36)
orcal(36,50)
c#(59,70)
microsoft(70,88)
unkown(88,103)