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

解析固定宽度文件PHP正则表达式,php,regex,Php,Regex,我有一个包含固定宽度数据的导出文件: 姓名(6) 性别(6) 电话号码(12)-包括一个空格 Data.txt DanielMale (07654) 521254 Lisa Female(16545) 654456 Sarah Female(54656) 4896546 如果数据不符合数据宽度,我需要提取姓名和性别数据,包括任何空格 需要忽略电话号码的括号。(如何忽略正则表达式中的项 我现在有下面的正则表达式,它可以提取人名。我想我可以简单地在白色上加上一点,使其提取性别,但这不起作用。我

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

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

Data.txt

DanielMale  (07654) 521254
Lisa  Female(16545) 654456
Sarah Female(54656) 4896546
如果数据不符合数据宽度,我需要提取姓名和性别数据,包括任何空格

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

我现在有下面的正则表达式,它可以提取人名。我想我可以简单地在白色上加上一点,使其提取性别,但这不起作用。我哪里出了问题

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

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

/^(?<name>.{6})(?<gender>.{6})\((?<prefix>[^\)]+)\)\ (?<number>.+)/
/^(?{6})(?。{6})\((?[^\)]+)\(?。+)/
  • 第一个
    ^
    表示从一开始就匹配
  • {6}
    :匹配模式的6倍(加号在这里是多余的)
  • \(
    \)
    :匹配括号(不转义括号将表示子模式的边界)
  • [^\)]+
    表示“第一个结束括号之前的所有内容”

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

/^(?<name>.{6})(?<gender>.{6})\((?<prefix>[^\)]+)\)\ (?<number>.+)/
/^(?{6})(?。{6})\((?[^\)]+)\(?。+)/
  • 第一个
    ^
    表示从一开始就匹配
  • {6}
    :匹配模式的6倍(加号在这里是多余的)
  • \(
    \)
    :匹配括号(不转义括号将表示子模式的边界)
  • [^\)]+
    表示“第一个结束括号之前的所有内容”