2016-12-11 36 views
0

私はPythonの正規表現パッケージの再を使用してのpython 2.7で次の文字列に一致するようにしようとしていますし、トラブル正規表現コードを考え出すを持っています:文字を含む特定の文字列にマッチするPythonの再(正規表現)は、ハイフン、数字

https://www.this.com/john-smith/e5609239 
https://www.this.com/jane-johnson/e426609216 
https://www.this.com/wendy-saad/e172645609215 
https://www.this.com/nick-madison/e7265609214 
https://www.this.com/tom-taylor/e17265709211 
https://www.this.com/james-bates/e9212 

接頭辞は "https://www.this.com/"と固定されています。可変数の小文字があり、その後に " - "、 "e"、そして可変桁数があります。ここで

は、私が無駄にしようとしたものです:あなたの助けのための

href=re.compile("https://www.this.com/people-search/[a-z]+[\-](?P<firstNumBlock>\d+)/") 

href=re.compile("https://www.this.com/people-search/[a-z][\-][a-z]+/e[0-9]+") 

ありがとう!

答えて

1

あなたは特殊文字をエスケープして問題に実行されています。生の文字列を使用していないので、バックスラッシュは文字列リテラル自体に特別な意味を持ちます。さらに、文字クラス([])は正規表現でエスケープする必要はありません。

expression = r"https://www.mylife.com/people-search/[a-z]+-[a-z]+/e\d+" 

を次のデータでは:

strings = ['https://www.mylife.com/people-search/john-smith/e5609239', 
'https://www.this.com/people-search/jane-johnson/e426609216', 
'https://www.this.com/people-search/wendy-saad/e172645609215', 
'https://www.this.com/people-search/nick-madison/e7265609214', 
'https://www.this.com/people-search/tom-taylor/e17265709211', 
'https://www.this.com/people-search/james-bates/e9212'] 

結果:

>>> for s in strings: 
...  print(re.match(expression, s)) 
... 
<_sre.SRE_Match object; span=(0, 56), match='https://www.this.com/people-search/john-smith/e> 
<_sre.SRE_Match object; span=(0, 60), match='https://www.this.com/people-search/jane-johnson> 
<_sre.SRE_Match object; span=(0, 61), match='https://www.this.com/people-search/wendy-saad/e> 
<_sre.SRE_Match object; span=(0, 61), match='https://www.this.com/people-search/nick-madison> 
<_sre.SRE_Match object; span=(0, 60), match='https://www.this.com/people-search/tom-taylor/e> 
<_sre.SRE_Match object; span=(0, 54), match='https://www.this.com/people-search/james-bates/> 
1
re.compile(r'https://www.this.com/[a-z-]+/e\d+') 

[a-z-]+試合john-smith e\d+試合e5609239

次のようにあなたの表現を簡素化することができます
1
text = '''https://www.this.com/john-smith/e5609239 
https://www.this.com/jane-johnson/e426609216 
https://www.this.com/wendy-saad/e172645609215 
https://www.this.com/nick-madison/e7265609214 
https://www.this.com/tom-taylor/e17265709211 
https://www.this.com/james-bates/e9212''' 
href = re.compile(r'https://www\.this\.com/[a-zA-Z]+\-[a-zA-Z]+/e[0-9]+') 
m = href.findall(text) 
pprint(m) 

出力:

['https://www.this.com/john-smith/e5609239', 
'https://www.this.com/jane-johnson/e426609216', 
'https://www.this.com/wendy-saad/e172645609215', 
'https://www.this.com/nick-madison/e7265609214', 
'https://www.this.com/tom-taylor/e17265709211', 
'https://www.this.com/james-bates/e9212'] 
関連する問題