识别一行字符串中数据类型的模式

时间:2019-02-22 07:31:45

标签: java regex grok java-grok

我正在尝试使用Java从字符串格式的文件中解析/提取数据。该文件不包含不相同的数据,该数据用逗号分隔,每行用几行,用空格分隔。但是在同一行内是相同的。同样,留置权中的参数也不相同。

行示例:

other column of file1 in array a

以此类推...

例如,我必须从所有行中识别电子邮件,ipaddress,电子邮件,URL,是否有一种方法可以这样做?还是我应该仅按分隔符进行拆分,然后分别解析/识别拆分是否为电子邮件/ ipaddress / url等?

我遵循this使其使用ipaadress,timestamp,text,text,url,text,email email text ipaddress text timestamp url text - timestamp ipaddress text text url email text,integer,integer,text,ipaddress,timestamp email 来处理相同的数据,而JSON是最重要的。是否有办法使用Grok解决不相同?

帮助我理解。

1 个答案:

答案 0 :(得分:1)

  

例如,我必须从所有行中识别电子邮件,ipaddress,电子邮件,URL,是否有一种方法可以这样做?还是我应该仅按分隔符进行拆分,然后分别解析/识别拆分是否为电子邮件/ ipaddress / url等?

我肯定会说先拆分,然后然后确定不同的部分,这将花费很多的方式。假设您要创建一个模式以从这些字符串之一中提取电子邮件地址,除了单纯的电子邮件模式之外,还必须谨慎匹配:

  1. 该行开头的 (以字母开头,可以在逗号或空格之前结束)
  2. 之间(在逗号或空格之前/之后开始/结束)
  3. 在行的末尾 (逗号或空格后可以以换行结束,具体取决于您提取输入内容的方式)

查找正则表达式以匹配所有这些情况(针对每种数据类型)将是更多工作,然后仅拆分字符串并分别进行标识即可。

您还应该考虑如何处理包含空格和逗号本身的文本数据。