正则表达式应用实例
2013-06-27 23:04
525 查看
零宽断言
1、有这样的需求,请求一个接口返回下面的xml:<?xml version="1.0" encoding="UTF-8" ?> <rsp> <code>000000</code> <info>成功</info> </rsp>
现在需要一个简单的处理:如果返回的code为"000000"则在前面加"00"。否则加"10"。利用正则中的(?=exp)和(?<=exp)可以很容易解决:
(?=exp)也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp。
(?<=exp)也叫零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp。
Java中String类的replaceAll方法也可以使用正则表达式。
protected String transferErrorCode2(String response) { String patternStr = "(?<=<code>)\\d+(?=</code>)"; Pattern pattern = Pattern.compile(patternStr); Matcher matcher = pattern.matcher(response); if (matcher.find()) { String match = matcher.group(0); String replace = (match.equals("000000") ? "00" : "10") + match; return response.replaceAll(patternStr, replace); } else { return response; } }
2、解析类似如下html片段中的车牌号:
<b>车牌号码:</b>京NC4Y59\t\t\t\t</li>\t<li>
java中用下面的正则表达式可以处理:
(?<=<b>车牌号码:</b>)\\S+(?=\\s)
同样用的是零宽断言,不过需要注意的是,这里用\\S+来匹配任意非空白字符,包括汉字。我刚开始想到的是用.来匹配:
(?<=<b>车牌号码:</b>).+(?=\\s)
得到的确实类似下面的结果:
京NC4Y59 </li>
这里“.”可以这样理解:“后面所有跟着空白字符(\\s)的字符”。
待补充……
相关文章推荐
- c#正则表达式应用实例
- 正则表达式应用实例
- 进阶--正则表达式的应用实例通俗说明
- js中正则表达式的应用实例
- 【6】 正则表达式应用——实例应用
- 正则表达式应用通配符及常用实例 unterminated parenthetical中文意思为未结束括号
- JavaScript 正则表达式的应用实例
- JavaScript中简单应用正则表达式的小实例_文本替换_replace
- 浅析PHP正则表达式的应用实例
- c#正则表达式应用实例(转)
- JavaScript中简单应用正则表达式的小实例_文本替换_replace
- 正则表达式的应用实例通俗说明
- 正则表达式的应用实例通俗说明
- 正则表达式的实例应用
- grep正则表达式原理介绍及应用实例
- 正则表达式用法基础及应用实例
- vim的正则表达式(二)应用实例
- php中常用的正则表达式的介绍及应用实例代码
- 转]c#正则表达式应用实例
- TCL的读取、写入文件,正则表达式的应用及列表的应用实例