我有一个正则表达式,找不到与文件中文本匹配的内容
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]*
为什么文本不匹配?
答案 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