我的一个朋友说,如果我使用的正则表达式太长,它可能是适合这项工作的错误工具。这里有什么更好的方法来解析这个文本吗?我有一个正则表达式,可以将所有内容返回到一个数组中,我可以轻松地将其分块,但如果有另一种更简单的方法,我真的很想看到它。
这是它的样子:
2 AB 123A 01JAN M ABCDEF AA1 100A 200A 02JAN T /ABCD /E
这是一个细分:
2
是行号,这些范围从1
一直到99
. 如果由于格式化而看不到,则在小于 10 的数字前有一个空格字符。该空间可能会或可能不会被替换
*
AB
是重要的数据单位(UOD)。AB
可以在前面加上/CD
另一个重要的 UOD。123
是一个重要的UOD。它的范围可以从1
(前面加上 4 个空格)到99999
.A
是一个重要的UOD。01JAN
是天/月组合,我需要提取两个 UOD。M
是日期名称的缩写形式。这可能是 和 之间的1
数字7
。ABC
是一个重要的UOD。DEF
是一个重要的UOD。后面的空格
DEF
可能是*
AA1
可能是零个字符,也可能是 5 个。这并不重要。100A
是时间戳,但可能格式为1300
.A
可能是在下午的N
时间1200
或时间。P
然后我们看到另一个时间戳。
下一个日期部分可能不存在,例如,这是有效的:
93*DE/QQ51234 30APR J QWERTY*QQ0 1250 0520 /ABCD*ASDFAS /E
出现的数据
/ABCD*ASDFAS /E
与应用程序无关,但是,这是第二个日期戳可能出现的地方。前斜线可能是其他东西(例如字母)。
注意:
它不是空格分隔的,身体的某些部位会碰到其他部位。字符位置仅对列表中的前两个或三个项目准确
我认为我没有遗漏任何内容,但是,如果有比编写正则表达式更简单的方法来解析这样的字符串,请告诉我。