java - 用正则表达式分割java日志行

标签 java regex

我正在尝试拆分如下所示的日志行:

15:10:10,408 INFO <NioProcessor-11> Raw Message: 8=FIXT.1.1|9=317|35=D|49=verifix|

变成这样的东西:

15:10:10 
408
INFO
NioProcessor-11
FIXT.1.1
317
D
verifix

拆分中的每个信息。

我尝试用 split 函数来分割它,仅使用

mystring.split((,)| \\\|)这将我的代码拆分为类似的内容:

15:10:10
408 INFO <NioProcessor-11> Raw Message: 8=FIXT.1.1
9=317
35=D
49=verifix

然后我进行了第二次分割408 INFO <NioProcessor-11> Raw Message: 8=FIXT.1.1 并做一个子串。它有效,但并不完美,因为有时第二次分割更长或更短,它看起来不是一个好的解决方案。

我想知道是否可以实际使用正则表达式拆分该字符串。我是正则表达式的新手,我没有找到一种方法来编写处理我的目标的表达式。

最佳答案

See regex in use here

(?:> [^:]+: |\d+=|[ ,|<>])+
  • (?:)+匹配以下任一选项一次或多次
    • > [^:]+:火柴> ,然后是除 : 之外的一个或多个任意字符,然后:
    • \d+=匹配一位或多位数字,然后 =
    • [ ,|<>]匹配集合中的任意字符

结果:

15:10:10
408
INFO
NioProcessor-11
FIXT.1.1
317
D
verifix

关于java - 用正则表达式分割java日志行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49076594/

相关文章:

java - 使用 session 加载图像名称

java - 如何传入图形g

regex - 是否有正则表达式可以替换VIM中nn :nn:nn. nn中的前导零(最后一个除外)和冒号?

java - 未找到 ant junit 引用

java - 为什么一种方法会破坏我的链表而另一种方法不会?

java - 以编程方式加载 Java cacert 时出现授权错误

javascript - 为什么正则表达式不能处理 header 来检查请求?

c++ - 为什么使用 "cmatch"的 C++ 正则表达式代码会引发 "smatch"异常?

regex - 迁移: JUnit 3 to JUnit 4: TestSuite

javascript - Php 正则表达式 到 javascript 正则表达式