末尾にドットが付いたミドルイニシャルを削除するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/447391

質問

「。」が付いたミドルネームのイニシャルを持つフィールドに多くの名があります。最後に..

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

Kenneth R.

into

Kenneth

I私自身のサイトを構築しようとしていて、この便利なサイトが見つかりました。

http:// www .gskinner.com / RegExr /

しかし、私はPerl&が初めてです。正規表現を取得し、" ... $" -名の末尾にミドルネームのイニシャルがない場合は役に立ちません。


i検討が必要な別の名前形式が見つかりました... 'R.ケリーは「ケリー」である必要があります

役に立ちましたか?

解決

最後の" word"を削除するにはドットで終わる場合:

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

(これはその後にスペースがないと仮定します)

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

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

すべてを削除する場合は、/ g修飾子を確認してください...

とBTWはあなた自身をテストケースリストにしてソリューションをチェックします 実際の単語データで試してみると、おそらく驚きがあります...

他のヒント

R。ケリーのケースを処理するには:

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 を参照してください。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top