import re 

text = "Mr. Smith bought cheapsite.com for 1.5 million dollars, i.e. he paid a lot for it. \
Did he mind? Adam Jones Jr. thinks he didn't. In any case, \
this isn't true... Well, with a probability of .9 it isn't."

# Method 1
for i in re.findall(r'[A-Z][a-z]+\.?.*?[.?!](?= [A-Z]|$)', text):
    print i

print '*'*80

#Method 2 - using verbose mode. 
for i in re.findall(r'''
						[A-Z][a-z]+\.?   # Starts with Capital includes (Mr., Mrs.)
                        .*?              # followed by anything
                        [.?!]            # ends with a (.)(?)(!)
                        (?=\s[A-Z]|$)    # is followed by whitespace and a capital letter
                     ''', text, re.X):
    print i

print '*'*80 

#Method 3
for i in re.split(r'(?<=[^Mr|Mrs|Dr][.?!])\s(?=[A-Z])', text):
    print i
文分割関数は、テキストを文に分割することができるプログラムである。
文分割のための標準的なヒューリスティック・セットには、以下のルールが含まれる（ただし、これらに限定されるものではない）。文の区切りは"."（ピリオド）、"?"、"!"のいずれかで行われる。

1. ピリオドに続く空白と小文字は文の境界ではない。
2. ピリオドの後に空白がなく数字が続くものは文の境界ではない。
3. ピリオドの後に空白があり、その後に大文字が続くが、その前に短いタイトルのリストがあるものは文の区切りではない。
   タイトルの例としては、Mr.、Mrs.、Dr.などがある。
4. 空白が隣接していない文字のシーケンスに含まれるピリオドは、文の境界ではありません(例えば、www.aptex.com や e.g）。
5. ピリオドに続くある種の句読点（特にカンマとそれ以上のピリオド）は、おそらく文の境界ではない。

ここでテキストファイルの名前を与えると、その内容を各文章を別々の行に書くことができるプログラムを書きなさい。
以下の短い文章でプログラムをテストしてください：

Mr. Smith bought cheapsite.com for 1.5 million dollars, i.e. he paid a lot for it. Did he mind? 
Adam Jones Jr. thinks he didn't. In any case, this isn't true... Well, with a probability of .9 it isn't. 

結果は以下のようになるはずです。

Mr. Smith bought cheapsite.com for 1.5 million dollars, i.e. he paid a lot for it.
Did he mind?
Adam Jones Jr. thinks he didn't.
In any case, this isn't true...
Well, with a probability of .9 it isn't.