2017-11-02 8 views
-1

Pythonを使用する3.4.3Python3 Regex groupdictが正しく動作しない

私は正規表現を使ってCSSのような識別子を分割しようとしています。私のパターンは次のとおりです。

pattern = re.compile("(?P<tag>[^.#]+)?(#(?P<iḍ>[^.#]+))?(?P<classes>([.][^.#]+)+)?")

私のテスト文字列がh2#labelです。私が試合をするとき、私が得るグループは正しいです('h2', '#label', 'label', None, None)です。

一致のgroupdictが届いた場合、私は{'classes': None, 'iḍ': 'label', 'tag': 'h2'}も正しく見えます。しかし、私がidの値を取得しようとすると、それが存在しないかのように結果が得られます。

"id" in match.groupdict()利回りFalseをやってやって "match.groupdictを()。取得(" ID ")yields NONE`を。

ここで間違っているものを任意のアイデアをし、それを解決する方法?

+1

参照[tinycss:Python用CSSパーサ]の。(https://tinycss.readthedocs.io/en/latest/) –

+0

@Wictor私はパースCSSがあることを知っています解決済み問題。これは私が最初からやろうとしていたより大きなものの一部でした。私は回避策を考えることができるので、これは動作する必要はありませんが、不正な動作のようです。 – fabikw

+1

'?P 'を使用しましたが、 '?P 'ではなく、グループ 'id'がありません。だから、すべて正常に動作し、あなたは単にタイプミスをしました。 –

答えて

1

をあなたが修正する必要がありますタイプミス:。代わりに'iḍ'タイプ'id'

pattern = re.compile("(?P<tag>[^.#]+)?(#(?P<id>[^.#]+))?(?P<classes>([.][^.#]+)+)?") 
関連する問題