300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 正则表达式-贪婪匹配与懒惰匹配之获取短信验证码

正则表达式-贪婪匹配与懒惰匹配之获取短信验证码

时间:2018-08-08 17:55:40

相关推荐

正则表达式-贪婪匹配与懒惰匹配之获取短信验证码

今天由于一个正则的关系,涉及到了贪婪匹配和懒惰匹配,因为对正则表达不是很懂,所以做个笔记

以下是获取验证码的方法

/*** 从短信内容中获取验证码* @param src* @param startMatch* @param endMatch* @return*/public static String getRandomCode(StringstartMatch, String src, String endMatch) {String randomCode = null;String pattern = null;if (EmptyUtils.isNotBlank(endMatch)) { // 1.如果结束标识不为空//pattern = String.format("%s(.*)%s",startMatch, endMatch);// 正则-贪婪匹配pattern = String.format("%s(.*?)%s",startMatch, endMatch);// 正则-懒惰婪匹配} else {pattern =String.format("%s([0-9|a-z|A-Z]+)", startMatch);}Pattern pn = pile(pattern);Matcher matcher = pn.matcher(src);if (matcher.find()) {randomCode = matcher.group(1);}System.out.println("get random code=" +randomCode + "\npattern=" + pattern);return randomCode;}

下面给上测试代码

public static void main(String[] args) {String testMatcher = getRandomCode("验证码为:","验证码为:1234,回复到100836,回复到13800138000",",回复到");System.out.println("testMatcher = " +testMatcher);}

如果使用贪婪匹配的话,输出内容为

这显然不是我们想要的

下面使用懒惰匹配,输出内容为

得到了正确的结果

总结:大概懒惰匹配,见名知意,就是匹配到第一个就结束吧

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。