2017-05-23 18 views
-3

Python3の正規表現に基づいて任意の文字列からサブ文字列を識別する必要があります。例についてはPython3の正規表現部分文字列

、以下の文字列を取る:

It sent a notice of delivery of goods: UserName1 
Sent a notice of delivery of the goods: User is not found, UserName2 
It sent a notice of receipt of the goods: UserName1 
It sent a notice of receipt of the goods: User is not found, UserName2 

私はテキストを取得したいコロン

結果後:私は正規表現を書くことで助けを頼む

UserName1 
User is not found, UserName2 
UserName1 
User is not found, UserName2 

。 ご協力いただきありがとうございます!

+0

をあなたは何かをtryiedていませんでした。私はまずあなたに - > docs.python.org/2/library/re.htmlを見てほしい。次に、正規表現を構築しようとします。正規表現に問題がある場合、正規表現を表示すると、コミュニティがあなたを助けます。ここでは、正規表現のpythonの動作例です:https://developers.google.com/edu/python/regular-expressions –

+0

なぜstr.split( ':')と正規表現を完全に避ける – Ludisposed

+0

私はむしろ[ str.find](https://docs.python.org/3.6/library/stdtypes.html#str.find)と文字列スライス、 ':'に分割する必要はありません –

答えて

0

ここで正規表現のための必要はありません、あなただけのsplitあなたは、あなたの正規表現を好む、およびライン上に複数の:を避けるために、場合\n:、すなわち:

text = """It sent a notice of delivery of goods: UserName1 
Sent a notice of delivery of the goods: User is not found, UserName2 
It sent a notice of receipt of the goods: UserName1 
It sent a notice of receipt of the goods: User is not found, UserName2""" 

for x in text.split("\n"): 
    print(x.split(": ")[1]) 

上のテキストをすることができます使用することができます。

for x in text.split("\n"): 
    print(re.split(".*: ", x)[1]) 

出力:

UserName1 
User is not found, UserName2 
UserName1 
User is not found, UserName2 
+0

これは複数の場合は出力を切り捨てます: '行ごとに存在します –

+0

OPが提供する例には複数の ':'が含まれていませんが、私の答えはそれに基づいています。 –

0
S[S.find(':') + 1:].strip() 

またはあなたが最後に出現する必要がある場合は、 ':'

S[S.rfind(':') + 1:].strip() 
関連する問題