使用RegEx解析没有换行符的文本文件

时间:2015-09-01 20:55:08

标签: regex

我有一个如下文字文件。每条记录有12个字段,由multiplier分隔,但没有像换行符那样的记录分隔符,每条记录都以|开头。我试图用RegEx解析它。

555 555 555 |abc|user|2|20120914055204696|20120914055204718|0||||21|33 555 |def|udp|2|20120914055204696|20120914055204718|0||||22|33

我尝试使用|abc|user|2|20120914055204696|20120914055204718|0||||23|33,但它没有用。有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:1)

您可以使用

555(?:\|[^|]*){11}(?=$|555)

请参阅demo

它将匹配输入字符串中的这些记录:

555|abc|user|2|20120914055204696|20120914055204718|0||||21|33
555|def|udp|2|20120914055204696|20120914055204718|0||||22|33
555|abc|user|2|20120914055204696|20120914055204718|0||||23|33

正则表达式555(?:\|[^|]*){11}(?=$|555)匹配:

  • 555 - 文字555
  • (?:\|[^|]*){11} - 11次出现|后跟除|
  • 以外的任意数量的字符
  • (?=$|555) - 最多(但不是作为匹配的一部分返回)字符串结尾或555

答案 1 :(得分:0)

555(?:\|[^|]*?){11}\d\d

您需要删除第二个|。请参阅演示。

https://regex101.com/r/sS2dM8/31