解析固定宽度文件PHP正则表达式

时间:2013-10-07 22:41:16

标签: php regex

我有一个包含固定宽度数据的导出文件:

名称(6) 性别(6) 电话号码(12) - 包括空格

DATA.TXT

DanielMale  (07654) 521254
Lisa  Female(16545) 654456
Sarah Female(54656) 4896546

如果数据不符合数据宽度,我需要提取名称和性别数据,包括任何空格。

需要忽略电话号码的括号。 (你如何忽略正则表达式中的项目?

我目前有以下正则表达式,它会拉出人们的名字。我以为我可以简单地在白色上添加一点来使它拉出性别,但这不起作用。我哪里错了?

/(?<name>.{6}+)        (?<gender>.{6}+)/

我需要在最后看到这样的数据。

^ =空间

Daniel
Male^^
07654 521254

Lisa^^
Female
16545 654456

Sarah^
Female
54656 4896546

1 个答案:

答案 0 :(得分:1)

这应该包含所有四个字段:

/^(?<name>.{6})(?<gender>.{6})\((?<prefix>[^\)]+)\)\ (?<number>.+)/
  • 第一个^表示从头开始匹配。
  • {6}:匹配模式的6倍(此处加号是多余的)
  • \(\):匹配括号(没有转义它们将意味着子模式的边界)
  • [^\)]+表示“第一个结束时的所有内容”