正则表达式匹配特定记录的文件模式

时间:2016-12-02 13:11:08

标签: regex

我有下面给出的文件 我想验证我的文件,如果第一行有" ZZ ="第三条记录只有" XXX"

如果此模式与拒绝文件不匹配。

文件示例

ZZ=101
OO
XXX
111111111111
222222222222

00000000000
AAAAAAAAAAAA


valid file example


ZZ=101
OO
XXX
111111111111
222222222222

00000000000
AAAAAAAAAAAA


Not valid file


ZZ=101
OO
XSS  (should be rejected except XXX)
111111111111
222222222222

00000000000
AAAAAAAAAAAA


Not valid file


HH=101 (should be rejected except ZZ=)
OO
XXX  (should be rejected except XXX)
111111111111
222222222222

00000000000
AAAAAAAAAAAA

我有什么方法可以使用正则表达式来匹配这种模式吗?

请提出任何建议..

谢谢!

2 个答案:

答案 0 :(得分:0)

假设“记录”是指由“\ r”和/或“\ n”分隔的行,并且每个数据集都在一个单独的文件中,检查此模式就足够了:

^ZZ=.*[\r\n]{1,2}.*[\r\n]{1,2}XXX

相反,如果您将所有数据集合并到一个文件中,Wiktor Stribiżew上面提出的模式似乎更准确地涵盖了您所寻求的模式。

修改

这应该匹配上述模式后的任何内容:

^ZZ=.*[\r\n]{1,2}.*[\r\n]{1,2}XXX[\s\S]*

(我还将[\ r \ n]更正为[\ r \ n] {1,2})

答案 1 :(得分:0)

试试这个

/ZZ=\d+.+XXX.+/s

/ - 分隔符
ZZ = \ d +。+ XXX。+ - 模式
/ - 结束分隔符
s - 单行修饰符

我已经尝试过在php中运行

https://regex101.com/r/KXlE1q/1