大きなレポート ファイルを解析するために 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 が $2 の代わりに $1 に吸い込まれます。$2 に悪いテキストが必要か、まったく一致しないかのどちらかです。
名前に追加したくないテキストは、既知のテキスト文字列の非常に小さなリストの 1 つになるため、それらを条件付きグループに追加できることに注意してください。
perlretut を 2 回読んだことがありますが、これを行う方法が見つかりません。それは単純であるべきだと思われます!どんな助けでも大歓迎です。