Reg Exp不匹配

时间:2019-07-11 21:14:13

标签: regex typescript

我有一个正则表达式,找不到与文件中文本匹配的内容

Reg Ex:

^[ \t]*#[ \t]+vtk[ \t]+DataFile[ \t]+Version[ \t]+([^\s]+)[ \t]*\n(.*)\n[ \t]*(ASCII|BINARY)[ \t]*\n[ \t]*DATASET[ \t]+([^ ]+)[ \t]*\n

文件文本:

# vtk DataFile Version 4.2
ASCII
DATASET

当我将表达式切断为以下内容时,它会起作用:

 ^[ \t]*#[ \t]+vtk[ \t]+DataFile[ \t]+Version[ \t]+([^\s]+)[ \t]*\n(.*)\n[ \t]*

为什么文本不匹配?

1 个答案:

答案 0 :(得分:2)

我认为您匹配的(.*)\n太多,并且在DATASET之后没有更多数据可以匹配,但是在您的模式中仍然有[ \t]+([^ ]+)[ \t]*\n这不是可选的。

像这样尝试:

^[ \t]*#[ \t]+vtk[ \t]+DataFile[ \t]+Version[ \t]+([^\s]+)[ \t]*\n[ \t]*(ASCII|BINARY)[ \t]*\n[ \t]*DATASET

部分地,您的模式如下:

  • ^
  • [ \t]*#
  • [ \t]+vtk
  • [ \t]+DataFile
  • [ \t]+Version
  • [ \t]+([^\s]+)该组将匹配4.2
  • [ \t]*\n
  • [ \t]*(ASCII|BINARY)
  • [ \t]*\n
  • [ \t]*DATASET

Regex demo