我有文件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:]]
<-此行1
第2行:除日期,类型,登录号和警报号外,同一行1有时包含+或-号。…其他行我已经将所有这些行读到字符串列表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," ");
}
但是结果是日期和Alarmno:12345 …以及其他行内容。我什至试图重复这种表达,但对我没有帮助。有什么方法可以在Java中实现吗?
您可以使用
^\[?(\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:00
Name: +AA
Fam: aa
Resident: free
问题内容: 我只想读取文本文件的第一行并将该第一行放在字符串数组中。 这就是我所拥有的,但是它读取了整个文件。 myTextFile中的ex文本: 问题答案: 如果我了解你,那
问题内容: 我有一个大文件,需要阅读并制作字典。我希望尽快。但是我在python中的代码太慢了。这是显示问题的最小示例。 首先制作一些假数据 现在,这里是一个最小的python代码片段,可以读入它并制作一个字典。 时间: 但是,可以更快地读取整个文件,如下所示: 我的CPU有8个核心,是否可以在python中并行化此程序以加快速度? 一种可能是读取大块输入,然后在不同的非重叠子块上并行运行8个进程
本文向大家介绍基于python读取.mat文件并取出信息,包括了基于python读取.mat文件并取出信息的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了基于python读取.mat文件并取出信息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 导入所需包 读取.mat文件 随便从下面文件里读取一个: 读出来的m内容: 取出.mat里所
问题内容: 我想将1 GB大文件的所有行尽快读取到中。目前,我正在为此使用。解析文件后,我要进行一些计算(/ )。 起初我以为这已经并行完成了,但是似乎我错了:当按原样读取文件时,在我的双CPU笔记本电脑上大约需要50秒钟。但是,如果我使用bash命令拆分文件,然后并行处理它们,则只需要30秒钟。 我尝试了以下组合: 单个文件,没有并行lines()流〜50秒 单个文件,约50秒 两个文件,无平行
因此,我一直在使用Python3.2和OpenPyXL的iterable工作簿,如这里的“优化阅读器”示例所示。 当我尝试使用此策略读取从简单文档中提取的一个或多个文件时,就会出现问题。zip存档(手动和通过python zipfile包)。当我调用我得到“A”和我得到1,当要求打印每个单元格的值时,如下所示: 它打印A1、A2、A3、A4、A5、A6和A7中的值,而不管文件实际有多大。文件本身没
问题内容: 我正在尝试实现基本的词法分析器。目前,我在文件解析方面陷入困境。 这是我的栏位,称为“ p ++。ppp” 解析文件时,我得到:但是p ++。ppp是文件名! 同样,当我调试时,它读取文件名,然后退出。我想念什么? 问题答案: 您误解了的API 。从文档的构造函数: 构造一个新的Scanner,该扫描器生成从指定字符串扫描的值。 参数: 源 -一个字符串,扫描 这不是文件名-只是一个字