私はこの文字列を持っています。Regex - Python27を使用した数字と単語の正確な数を一致させよ
P O BOX 32370, CA 92263
そして、この正規表現\w{2} \d{5}
しかし、それは太字で両方のテキストと一致しました。 "P O B OX 32370、CA 92263"
実は私は州、および郵便番号を抽出したいです。
テキストを開始し、スペースを入力し、正確なアルファベットを2つ、次にスペースを1つ、正確な5桁を取得したいとします。
私はこの文字列を持っています。Regex - Python27を使用した数字と単語の正確な数を一致させよ
P O BOX 32370, CA 92263
そして、この正規表現\w{2} \d{5}
しかし、それは太字で両方のテキストと一致しました。 "P O B OX 32370、CA 92263"
実は私は州、および郵便番号を抽出したいです。
テキストを開始し、スペースを入力し、正確なアルファベットを2つ、次にスペースを1つ、正確な5桁を取得したいとします。
を強要、その後、テキストの開始とスペースをつかむために2アルファベット、次に1つは スペース、その後は正確な5桁です。
残念ながら、このパターン\b\w{2} \d{5}\b
も、あなたの条件に適合しない結果を与える"P O BOX 32370, 2A 92263"
などの文字列でマッチを見つけるでしょう。 \w
- すべてのアルファベットに一致します数値文字です。
方法(試合のすべての名前付きのサブグループを取得します)re.search()とmatch.groupdict()と、次のアプローチを使用し州、および郵便番号を抽出するには:
s = 'P O BOX 32370, CA 92263'
m = re.search(r'\b(?P<state>[a-zA-Z]{2}) (?P<zip_code>\d{5})\b', s)
result = m.groupdict() if m else ''
print(result)
出力を:
{'zip_code': '92263', 'state': 'CA'}
あなたがいるようです単語の境界の後ろに置くには、\ b \ w {2} \ d {5} \ b'を使います。 –