2016-05-19 6 views
0

Bloggerからの回答から特定の結果を得ようとしています。私は自分のブログの名前を取得したい。 Regexで私はどうやってそのようなことをやりますか?私は私の問題をグーグルで試してみましたが、答えのどれも私の場合は残念なことに私を助けませんでした。それは常に\\x22http://始まると、私は次の再試みた.blogspot.com/regexを使用して文字列の中央を検索する方法

で終了ですので

\\x22http://emyblog.blogspot.com/ 

regEx = re.findall(b"""\x22http://(.*)\.blogspot\.com""", r) 

しかし

は、だから私の応答は次のようになります残念ながら、それは空のリストを返しました。どのようにこの問題を解決するためのアイデアのですか?

おかげで、

+1

は、あなたの表現は '[「emyblog」]'生産、私のためにうまく働きました。 – TigerhawkT3

+0

@ TigerhawkT3 ** b **を削除した場合、次のようなエラーが発生します。** TypeError:バイト様オブジェクトに文字列パターンを使用できません。** Py3.5では** b **が必要です。 – Naomi

+0

'r'はバイトのようなオブジェクトです。式と文字列の両方のバイトオブジェクトを作ることは、私にとってもうまくいきます。 – TigerhawkT3

答えて

0

使用r''さもなければ\\x22文字"代わりにリテラルとして解釈され、代わりb''

import re 

pattern = re.compile(r'\x22http://(.*)\.blogspot\.com') 
match = pattern.match('\x22http://emyblog.blogspot.com/') 
match.group(1) 
# 'emyblog' 
4

使用生の文字列の(文字列生の文字列リテラルとします)文字列。 re.findallメソッドが良い方法であることを確認するには、re.searchで十分です。

あなたのバイト列と仮定すると次のとおりです。バイト文字列を

>>> r = rb'\\x22http://emyblog.blogspot.com/' 

:通常の文字列で

>>> res = re.search(rb'\\x22http://(.*)\.blogspot\.com/', r) 
>>> res.group(1) 
b'emyblog' 

>>> res = re.search(r'\\\\x22http://(.*)\.blogspot\.com/', r.decode('utf-8')) 
>>> res.group(1) 
'emyblog' 
+0

ちょっと、私が** re.searchfindall **を使用すると、私はキーエラーを受け取ります** AttributeError:module 're '属性はありません' searchfindall '** – Naomi

+0

@Naomi:プレスF5 .......... –

+0

生の文字列なしで試しましたか?それはうまく動作します。問題はないので、実際には問題は解決しません。 – TigerhawkT3

0

これが動作しているようです!バイト文字列を示します(したがって、トレースバックではなく、空のリストを生成) 'B'を削除

import re 
    text = "\x22http://emyblog.blogspot.com/" 
    regex = re.compile('\x22http://(.*)\.blogspot\.com') 
    print regex.findall(text) 
関連する問題