您可以使用
^[?(d[d-]+).*?[alarmno:(w*)].*?[logno:(w*)].*?[type:w*:([^]]*)]
参见正则表达式演示
详细资料 :
^
-字符串开始[?
-可选[
(d[d-]+)
-第1组:一个数字和1个或多个数字或-
s.*?
-除换行符以外的任何0+字符都应尽可能少[alarmno:
-[alarmno:
子字符串(w*)
-第2组:0个以上的字符字符]
-文字]
.*?
-除换行符以外的任何0+字符都应尽可能少[logno:
-文字[logno:
子串(w*)
-第3组:0个以上的字符字符]
- 一个]
.*?
-除换行符以外的任何0+字符都应尽可能少[type:
-[type:
子字符串w*
-0+个字元:
-冒号([^]]*)
-第4组:0个以上的字符,除]
]
- 一个]
Java演示:
String s = "[2017-08-17 08:00:00 Comming in [Contact:NO] [REF:] [REF2:] [REF3:] [Name:+AA] [Fam:aa] [TEMP:-2:0:-2:0:-2] [Resident:9:free] [end:0:]";Pattern pat = Pattern.compile("^\[*(\d[\d: -]+\d).*?\[Name:([^]]*)].*?\[Fam:(\w*)].*?\[Resident:\w*:([^]]*)]");Matcher matcher = pat.matcher(s);if (matcher.find()){ System.out.println("Date: " + matcher.group(1)); System.out.println("Name: " + matcher.group(2)); System.out.println("Fam: " + matcher.group(3)); System.out.println("Resident: " + matcher.group(4)); }
输出:
Date: 2017-08-17 08:00:00Name: +AAFam: aaResident: free
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)