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

gajydyqb  于 2023-06-30  发布在  其他
关注(0)|答案(2)|浏览(90)

我有像下面给出的文件,我想验证我的文件,如果第一行是有“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

有没有什么方法可以使用正则表达式来匹配这个模式?
有什么建议请…
谢谢!

5jdjgkvh

5jdjgkvh1#

试试这个

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

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

我试过在php和它的作品
https://regex101.com/r/KXlE1q/1

8oomwypt

8oomwypt2#

假设“records”是指由“\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})

相关问题