3

ミドルネームのイニシャルに「.」が付いている名前がフィールドにたくさんあります。最後に..

この例を変換するには、正規表現が必要です: Kenneth

R.



Kenneth

にPerl と正規表現が初めてで、"...$" しか取得できませんでした。名前の末尾に中間のイニシャルがない場合、これは役に立ちません....




考慮が必要な別の名前形式を見つけました... 'R. ケリー」は「ケリー」である必要があります

4

2 に答える 2

3

ドットで終わる最後の「単語」を削除するには:

my $name =~ s/\w+\.$//i;

(これは、その後にスペースがないことを前提としています)

ドットで終わる単語を削除するには:

my $name =~ s/\w+\.//i;

それらをすべて削除したい場合は、 /g 修飾子を見てください...

ところで、ソリューションを確認するためのテストケースリストを自分で作成してから、実際の単語データで試してみると、おそらく驚きが生じるでしょう...

于 2009-01-15T16:17:53.247 に答える
2

R. Kelly のケースを処理するには:

s/\w\. *//g

簡単なテストは次のとおりです。

$ echo 'R. Kelly
Kenneth R.
R. Kemp R.
John Q. Smith' | perl -pe 's/\w\. *//g'
Kelly
Kenneth 
Kemp 
John Smith

私はそれを提案します:

  1. グローバル オプション ( g) は必須です。
  2. 大文字と小文字を区別しないオプション ( i) は違います。
  3. 大文字 ( [:upper:]) のイニシャルのみを検索することを検討してください。
  4. 複数の文字の「イニシャル」は、疑いを持って表示する必要があります。(w+データに関連するケースがない限り、おそらく間違いです。)
  5. 詳細perldoc perlreについては、こちらをお読みください。
于 2009-01-15T21:18:00.783 に答える