从复杂字符串中找出符合正则的字符串

笔者从导游证中识别出文字后,需要提取导游证号

电子导游证长这样


返回数据长这样

{"status":"0","msg":"ok","result":["中国移动4G","14:18","Q36%口","<返回关闭","导游证","●●●","APP关闭","CHINA TOUR GUIDE","沈XX","SHEN SHUFANG","导游证号:YBP3XX2R","导游级别:初级","导游语种:普通话初级","所在机构:XXX中国际旅行社有限","公司","回强口","查看评价信息"]}

因为识别效率以及导游证格式多种并且因为用户上传的照片有些比较模糊,“导游证号”这四个字不一定识别得出来.如果是导游证号都模糊识别不出来,那就没话说了,直接转人工识别了

所以采用下述方法来取导游证号

正则

[\\d+.\\d+|\\w+]{8}

我们需要导游证号YBP3XX2R 由英文以及数字组成,并且长度为8

上代码

 public static void main(String[] args){  
		        String  str="{\"status\":\"0\",\"msg\":\"ok\",\"result\":[\"中国移动4G\",\"14:18\",\"Q36%口\",\"<返回关闭\",\"导游证\",\"●●●\",\"APP关闭\",\"CHINA TOUR GUIDE\",\"沈XX\",\"SHEN SHUFANG\",\"导游证号:YBP3XX2R\",\"导游级别:初级\",\"导游语种:普通话初级\",\"所在机构:XX中国际旅行社有限\",\"公司\",\"回强口\",\"查看评价信息\"]}";  
		        String s = "[\\d+.\\d+|\\w+]{8}";
		        Pattern  pattern=Pattern.compile(s);  
		        Matcher  ma=pattern.matcher(str);  
		   
		        while(ma.find()){  
		        		System.out.println("find "+ma.group());  
		        	}
		   
		    }  


输出:find YBP3XX2R

正则表达式中“\d”表示[0-9]的数字,“\d+”表示由[0-9]的数字组成的数字,“\w”表示[A-Z0-9],“\w+”表示由数字、26个英文字母或者下划线组成的字符串,“\d+.+\d+”表示小数

猜你喜欢

转载自blog.csdn.net/qq_22585453/article/details/79975512