正規表現にて、以下の処理を1回で行うには、どのように記述したらよいでしょうか。


<元の文>
They are Mr.White and Ms.Black. They are happy.

<正規表現によるの置換処理1回後の文>
They are Mr.White and Ms.Black.
They are happy.


※センテンス末のピリオドの後のみ改行し、"Mr."や"Ms."に含まれるピリオドの後については何も処理しないと言うことです。

※正規表現による置換処理は1回のみです。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/10/02 15:15:47
  • 終了:2008/10/09 15:20:02

回答(2件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402008/10/02 15:42:34

ポイント35pt

センテンス末のピリオドの後

これを同定義するかにもよりますが、一番簡単なのは、

s/(\. +)/$1\n/g

でしょう。


センテンス末以外が Mr. Ms. だけならば、

s/(?<(?:Mr|Ms))\./.\n/g

とかも考えられますが、この構文自体一部の正規表現機構しか対応していないので処理言語等は選びます。

正規表現の解説 上級編

id:GoldenDawn No.2

GoldenDawn回答回数426ベストアンサー獲得回数812008/10/02 15:47:53

ポイント35pt

Perl で。


Mr.やMs.のあとに空白がなく、センテンス末の場合のみ空白がある場合

$str = "They are Mr.White and Ms.Black. They are happy." ;
$str =~ s/\.\s+/\.\n/ ;
print $str ;

Mr. や Ms. のあとに空白があるかもしれない場合

$str = "They are Mr.White and Ms.Black. They are happy." ;
$str =~ s/(?<!(Mr|Ms))\.\s*/.\n/ ;
print $str ;

http://q.hatena.ne.jp

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません