2017-04-24 13 views
1

RegExを使用して、さまざまなバリエーションのURLの特定の部分を抽出しようとしています。時々 "MIP" の部分が存在しないことをRegExを使用してURLの一部を抽出する

http://www.blackpages.com/cityName-StateName/mip/part-I-want-to-extract/randomCharacters 

とURLは次のようになります:ここで は、一般的な形式です

re.compile("blackpages\.com/.*") 

http://www.blackpages.com/cityName-StateName/part-I-want-to-extract/randomCharacters 

私は、次のREを書き始め

.*は任意の文字に一致します。次に、「/」に遭遇したときに停止し、次の「/」が発生する前にすべてを抽出します。これは、私が抽出したい部分を私に与えるだろう。あなたが否定文字クラスを使用する必要が

+0

ラケッシュ、任意のより多くの懸念?私の答えの下に線を落としてください。 –

答えて

1

re.compile(r"blackpages\.com/([^/]*)") 
          ^^^^ 

[^/]*は、できるだけ多くの(貪欲)、0+ /以外の文字と一致します。

/の後に少なくとも1つのcharがある場合は、*の代わりに+量指定子(1回以上の出現)を使用してください。

regex demo

Python codeを参照してください:

import re 
rx = r"blackpages\.com/([^/]*)" 
ss = ["http://www.blackpages.com/cityName-StateName/mip/part-I-want-to-extract/randomCharacters", 
"http://www.blackpages.com/cityName-StateName/part-I-want-to-extract/randomCharacters"] 
for s in ss: 
    m = re.search(rx, s) 
    if m: 
     print(m.group(1)) 

出力:

cityName-StateName 
cityName-StateName 
+0

その部分だけを抽出するキャプチャグループを使用するべきではありませんか? – Rahul

+0

グループとコードも追加しました。 –

関連する問題