"123".matches("-?\\d+");
"+911".matches("(-|\\+)?\\d+"); \\+ +是特殊字符需要转义
"^[abc][ed]$"//学习正则表单式规则
字符
B | \xhh | \uhhh | \t | \n | \r | \f | \e |
---|---|---|---|---|---|---|---|
指定字符B | 十六进制为oxhh的字符 | 十六进制为oxhhh的unicode字符 | 制表符 | 换行符 | 回车 | 换页 | 转义 |
. | [abc] | [^abc] | [a-zA-Z] | [abc[hij]] | [a-z&&[hij]] | \s | \S | \d | \D | \w | \W |
---|---|---|---|---|---|---|---|---|---|---|---|
任意一个字符 | a,b,or c | 除了a,b,or c | a-z或者A-Z | a,b,c,h,i or j | h,i,j && 两个取交集 | 空白符 | 非空白符 | 数字[a-9] | 非数字 | 字词[a-zA-Z0-9] | 非字词 |
量词
贪婪型(尽可能多的匹配) | 勉强型(最少的匹配) | 占有型(java语言才有的)和贪婪类似有区别 |
---|---|---|
X? | X?? | X?+ |
?,*,+,{n},{n,},{n,m} | 在贪婪的基础上加上? | 在贪婪的基础上加上+ |
public class TestRegx3 {
public static void main(String[] args) {
Matcher m = Pattern.compile("[a-z&&[hij]]").matcher("Evening is full af the linnet's wings");
while(m.find()) {
System.out.print(m.group()+"@");
}
System.out.println("");
int i = 0;
while(m.find(i)) {
System.out.print(m.group() + "$");
i++;
}
}
}
Pattern对象,和Matcher对象
Pattern p = Pattern.compile(regx); //编译正则表达式
Matcher m = p.matcher("XXXXXXXXXX");//生成Matcher
使用Matcher的方法,进行操作。
m.find();//匹配子序列
m.group();//上一次匹配到的子序列
m.start(),m.end()-1//上一次匹配到的子序列的起始位置
m.matches(); //判断整个输入字符串是否符合正则表达式
m.lookingAt();//判断开始部分是否符合正则表达式
m.find();//查找多个匹配,自动向后搜索。
m.find(int);//从指定位置搜素。
Pattern 标记
Pattern.compile(String regex,int flag|flag2);
flag :Pattern.Case_INSENSITIVE, 忽略大小写
Pattern.MULTILINE,
Pattern.COMMENETS,忽略空格等
Pattern.compile("!!").split(input);
将input按照正则表达式切分为字符串数组。
替换操作:都是String的方法
replaceFist(String replacement);替换第一个匹配成功的
replaceAll();替换所有匹配成功的
Matcher的方法
appendReplacement()渐进式替换。
appendTail(stringBuffer sbuf);