用于标识字符串行中的数据类型的模式

问题描述 投票:-1回答:1

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

线条示例:

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

等等...

比方说,我必须从所有线路识别电子邮件,ipaddress,电子邮件,网址,是否有这样做的模式?或者我应该用分隔符分割并单独解析/识别分割是否是电子邮件/ ipaddress / url等等?

我跟着this使用Grok来获取相同的数据,JSON就是拿走了。如果有办法解决使用Grok的不相同问题?

帮帮我理解

java regex grok java-grok
1个回答
1
投票

比方说,我必须从所有线路识别电子邮件,ipaddress,电子邮件,网址,是否有这样做的模式?或者我应该用分隔符分割并单独解析/识别分割是否是电子邮件/ ipaddress / url等等?

我肯定会说第一次拆分然后确定不同的部分,这将带来很多复杂性。假设你想创建一个模式来从这些字符串之一中提取电子邮件地址,除了单纯的电子邮件模式之外,你还需要小心匹配:

  1. 该行开头的地址(将以字母开头,可以在逗号或空格之前结束)
  2. 两者之间的地址(逗号或空格之前的开始/结束/之后)
  3. 行尾的地址(以逗号或空格开头后可以以新行结束,具体取决于您输入的输入方式)

找到一个正则表达式匹配所有这些情况(对于每种数据类型)将更多的工作,然后只是分割字符串并分别识别它们。

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

© www.soinside.com 2019 - 2024. All rights reserved.