JAVA 正则表达式涉及的三个类:
StringPatternMatcher
Pattern是要匹配的模式Matcher是匹配的结果
例如:Pattern p = plie([az]{});
Matcher m = pmather(abc);
要想在正则表达式中匹配一个反斜线用四个反斜线表示: \\matches(\\\\);
匹配空白行 \nmatches(^[\\s&&[^\\n]]*\\n$);
找出匹配结果在整个字符串的开始位置和结束位置
Pattern p = plie(\\d{});
String a = ;
Matcher m = pmatcher(s);
mmatches() // 匹配整个字符串所以这里是false;
mreset();
while(mfind()) // 找一个和这个模式所匹配的子串
{
Systemoutprintln(mstart() + To + mend());
}
将匹配到的java都转换成大写的
Pattern p = plie(java PatternCASE_INSENSITIVE);
Matcher m = pmatcher(java Java JaVa IloveJava You HateJaVA);
mreplaceAll(JAVA);
将匹配偶数个转换为大写奇数个转换为小写
package zxtest;
import javautilregexMatcher;
import javautilregexPattern;
public class TestPattern
{
public static void main(String[] args)
{
StringBuffer newString = new StringBuffer();
String isPatternString = java Java JaVa IloveJava You HateJaVA;
Pattern p = pile(java PatternCASE_INSENSITIVE);
Matcher m = pmatcher(isPatternString);
int i = ;
while(mfind())
{
i++;
if (i % == )
{
mappendReplacement(newString java);
}
else
{
mappendReplacement(newString JAVA);
}
}
mappendTail(newString);
Systemoutprintln(newString);
}
}
输出结果:JAVA java JAVA Ilovejava You HateJAVA
Java正则表达式分组:
private static void testGroup()
{
String s = afdsafijiikfsdfaf;
Pattern p = pile((\\d{})([az]{})); // 组:(\\d{}) 组:([az]{})
Matcher m = pmatcher(s);
while(mfind())
{
Systemoutprintln(Group: + mgroup() + Group: + mgroup() + Group: + mgroup());
}
}
输出结果:
Group: afdsaf Group: Group: afdsaf
Group: ijii Group: Group: ijii
Group: k Group: Group: k
Group: fsdfaf Group: Group: fsdfaf