我有文件file1,file2包含如下内容:
[2017-02-01 10:00:00 start running [error:yes] [doing:no] [finish:] [remind:] [alarmno:123456789] [logno:123456789] [ref:-1:2:-1:-1:-1] [type:2:big issues happen] [flag:0:]]
< ---此line1
线路2:
除日期,类型,logno和alarmno之外的同一行有时包含+或 - 符号。
......其他线路
我已经阅读了所有这些行到字符串myLines
的列表。
(注意:file1的内容将是由逗号分隔的myLines的第一个元素,myLines的第二个元素将是由逗号分隔的file2的内容,依此类推。
例如,myLines列表的第一个元素:
[2017-02-01 10:00:00 start running [error:yes] [doing:no] [finish:] [remind:] [alarmno:123456789] [logno:123456789] [ref:-1:2:-1:-1:-1] [type:2:big issues happen] [flag:0:],
2017-02-01 10:00:00 start running [error:yes] [doing:no] [finish:] [remind:] [alarmno:123456789] [logno:123456789] [ref:-1:2:-1:-1:-1] [type:2:big issues happen] [flag:0:]]
< ---这是myLines的第一个元素,它列出了file1的内容 如果文件包含一行,则表示myLines列表的第一个元素仅包含该行,而不包含逗号分隔。 我只想要
这是我尝试过的:
String regex = "\\d{2}:\\d{2}:\\d{2}\\s+\\w*\\s+\\w*\\s+\\[\\w*:\\w*]\\s+\\[\\w*:\\]\\s+\\[\\w*:\\]\\s+\\[\\w*:\\]";
String s=null;
for(int i=0; i<myLines.size(); i++)
{
s = myLines.get(i).replaceAll(regex," ");
}
但结果是日期和闹钟:12345 ......以及其他行内容。 我甚至试图重复那个表达但不帮助我。 有没有办法在java中实现它?
答案 0 :(得分:1)
您可以使用
^\[?(\d[\d-]+).*?\[alarmno:(\w*)].*?\[logno:(\w*)].*?\[type:\w*:([^\]]*)]
请参阅regex demo
<强>详情:
^
- 字符串开头\[?
- 可选的[
(\d[\d-]+)
- 第1组:一位数字和一个或多个数字或-
s .*?
- 除了换行符之外的任何0 +字符尽可能少\[alarmno:
- [alarmno:
子字符串(\w*)
- 第2组:0 +字字符]
- 文字]
.*?
- 除了换行符之外的任何0 +字符尽可能少\[logno:
- 文字[logno:
子字符串(\w*)
- 第3组:0 +字字符]
- ]
.*?
- 除了换行符之外的任何0 +字符尽可能少\[type:
- [type:
子字符串\w*
- 0+ word chars :
- 冒号([^\]]*)
- 第4组:除]
]
- ]
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:00
Name: +AA
Fam: aa
Resident: free