JAVA 正则表达式涉及的三个类:
String,Pattern,Matcher
Pattern是要匹配的模式,Matcher是匹配的结果。
例如:Pattern p = Pattern。complie("[a-z]{3}");
Matcher m = p。
mather("abc");
要想在正则表达式中匹配一个反斜线用四个反斜线表示: "\\"。matches("\\\\");
匹配空白行 " \n"。matches("^[\\s&&[^\\n]]*\\n$");
找出匹配结果在整个字符串的开始位置和结束位置
Pattern p = Pattern。
complie("\\d{3,5}");
String a = "123-2135-155-00";
Matcher m = p。matcher(s);
m。matches() // 匹配整个字符串,所以这里是false;
m。reset();
while(m。
find()) // 找一个和这个模式所匹配的子串
{
System。out。println(m。start() + "To" + m。end());
}
将匹配到的java都转换成大写的
Pattern p = Pattern。complie("java", Pattern。
CASE_INSENSITIVE);
Matcher m = p。matcher("java Java JaVa IloveJava You HateJaVA");
m。replaceAll("JAVA");
将匹配偶数个转换为大写,奇数个转换为小写
package zx。
test;
import java。util。regex。Matcher;
import java。util。regex。Pattern;
public class TestPattern
{
public static void main(String[] args)
{
StringBuffer newString = new StringBuffer();
String isPatternString = "java Java JaVa IloveJava You HateJaVA";
Pattern p = Pattern。
compile("java", Pattern。CASE_INSENSITIVE);
Matcher m = p。matcher(isPatternString);
int i = 0;
while(m。find())
{
i++;
if (i % 2 == 0)
{
m。
appendReplacement(newString, "java");
}
else
{
m。appendReplacement(newString, "JAVA");
}
}
m。appendTail(newString);
System。
out。println(newString);
}
}
输出结果:JAVA java JAVA Ilovejava You HateJAVA
Java正则表达式分组:
private static void testGroup()
{
String s = "3412afdsaf-34ijii-422342k23-423423fsdfaf";
Pattern p = Pattern。
compile("(\\d{1,10})([a-z]{1,9})"); // 组1:(\\d{1,10}) 组2:([a-z]{1,9})
Matcher m = p。matcher(s);
while(m。find())
{
System。
out。println("Group0: " + m。group() + " Group1: " + m。group
(1) + " Group2: " + m。
group
(2));
}
}
输出结果:
Group0: 3412afdsaf Group1: 3412 Group2: afdsaf
Group0: 34ijii Group1: 34 Group2: ijii
Group0: 422342k Group1: 422342 Group2: k。
全部