ピリオドの間の文字列の一部を抽出する正規表現に苦労していますが、特定の文字が前にある場合はピリオドを無視します (例では CO.)。関連するチャンクは常に「LTD」で終わると想定できます。
ケース 1:
string = "FREDS CHIP SHOP. S & B SERVICES CO. & SONS LTD. 1-12 THE STREET"
私が欲しい:"S & B SERVICES CO. & SONS LTD."
ケース 2:
string = "SOME TEXT. BUSINESS NAME LTD. 1-12 THE STREET"
私が欲しい"BUSINESS NAME LTD."
ケース 3:
string = "SIMPLE BUSINESS NAME LTD. 1-12 THE STREET"
私が欲しい"SIMPLE BUSINESS NAME LTD."
私は現在持っています:
#!/usr/bin/python
import sys
import re
vnumber_name = "FREDS CHIP SHOP. S & B SERVICES CO. & SONS LTD. 1-12 THE STREET"
#vnumber_name = "SOME TEXT. BUSINESS NAME LTD. 1-12 THE STREET"
#vnumber_name = "SIMPLE BUSINESS NAME LTD. 1-12 THE STREET"
def test(vnumber_name):
#ltd = re.search(r'.+\sLTD[.]?', vnumber_name)
ltd = re.search(r'[.?][\s]{1,2}(?:[^.]+|(?!CO.))LTD[.]?', vnumber_name)
if ltd:
print "got it: " + ltd.group(0)
else:
print "nothing"
test(vnumber_name)
これは正しくありません。
if 句をいくつか作成することもできますが、1 行の正規表現でそれを取得できればすばらしいでしょう。