博客详情

正则表达式零宽断言 (原创)

作者: 朝如青丝暮成雪
发布时间:2019-06-19 08:45:53  文章分类:java编程   阅读(3100)  评论(0)

匹配所有字母  [a-zA-Z]
匹配所有大写字母 [A-Z]
匹配所有小写字母 [a-z]
匹配字母+数字  [a-zA-Z0-9] 或者\w
匹配字母+数字+下划线 [a-zA-Z0-9_]
匹配中文 [\u4e00-\u9fa5]


零宽断言
 (?=) 零宽度正预测先行断言  (含义:目标内容的后面必须是什么)
 (?!)  零宽度负预测先行断言 (含义:目标内容的后面必须不是什么)
 (?<=) 零宽度正回顾后发断言 (含义:目标内容的前面必须是什么)
 (?<!) 零宽度负后顾后发断言 (含义:目标内容的前面必须不是什么)

匹配``两个撇号中间的内容(英文+数字)
(?<=`)\w+(?=`)

匹配>和<之间的空白符(如空格)
(?<=>)\s+(?=<)


//(正则查找)从字符串中,查找出所有的正则匹配处,并逐一打印。
Pattern p=Pattern.compile(regex);
Matcher m=p.matcher(str);
while(m.find()){
  String s=m.group();
  System.out.println(s);
}


//(正则匹配替换) 从字符串中,查找出所有的正则匹配处,并逐一替换为指定字符串
String s=str.replaceAll(regex,replaceStr);
System.out.println(s);

//正则匹配删除,可以将replaceStr设置为""即可
String s=str.replaceAll(regex,"");

System.out.println(s);



正则表达式使用案例:   这里使用到的正则就是   (?<="name"\:")[\w\u4e00-\u9fa5]+(?=")

/**
 * 将json字符串中所有的name字段的值修改为一个新值
 */
@Test
public void test1() {
String s1= "{\"name\":\"小明\",\"age\":22,\"master\":{\"name\":\"bb\",\"id\":1001,sex:1},\"users\":[{\"name\":\"cc\",\"addr\":\"南京\"},{\"name\":\"dd\",\"addr\":\"北京\"}]}";
String regex="(?<=\"name\"\\:\")[\\w\\u4e00-\\u9fa5]+(?=\")";
String s2= s1.replaceAll(regex, "新值");
System.out.println(s2);
}


关键字:  正则表达式  零宽断言
评论信息
暂无评论
发表评论

亲,您还没有登陆,暂不能评论哦! 去 登陆 | 注册

博主信息
   
数据加载中,请稍候...
文章分类
   
数据加载中,请稍候...
阅读排行
 
数据加载中,请稍候...
评论排行
 
数据加载中,请稍候...

Copyright © 叮叮声的奶酪 版权所有
备案号:鄂ICP备17018671号-1

鄂公网安备 42011102000739号