我正在使用 perl 来解析一个大的报告文件。我通过在报告某些行的开头查找姓氏和名字来提取姓名。我正在尝试排除名称后面的文本。其中一些文本字段是数字,因此很容易——我只是寻找非数字字符。但有些是我可以列出的固定文本字段。
例如——
LastNameA, FirstNameA
LastNameB, FirstNameB 345C
LastNameC, FirstNameC BADTEXT
LastNameD, FirstNameD MOREBADTEXT
我试过以下
/^(\D*)((BADTEXT|MOREBADTEXT|))/
/^(\D*)(BADTEXT|MOREBADTEXT|)/
/^(\D*?)((BADTEXT|MOREBADTEXT|))/
/^(\D*)((BADTEXT|MOREBADTEXT)?)/
/^(\D*)(?:(BADTEXT|MOREBADTEXT|))/
和其他几种组合。但是我要么不匹配,要么匹配 BADTEXT 或 MOREBADTEXT 被吸入 $1 而不是 $2。我要么想要 $2 中的错误文本,要么根本不匹配。
请注意,我不想附加到名称的文本将是一个非常小的已知文本字符串列表之一,因此我可以将它们添加到条件组中。
我已通读 perlretut 两次,但找不到如何执行此操作。看起来应该很简单!任何帮助深表感谢。