HTML から数値を抽出する単純な正規表現を Python で作成したいと考えています。HTML サンプルは次のとおりです。
Your number is <b>123</b>
では、「123」、つまり文字列「Your number is」の後の最初の太字テキストの内容を抽出するにはどうすればよいでしょうか。
import re
m = re.search("Your number is <b>(\d+)</b>",
"xxx Your number is <b>123</b> fdjsk")
if m:
print m.groups()[0]
次に与えられるs = "Your number is <b>123</b>"
:
import re
m = re.search(r"\d+", s)
働き、あなたに与えます
m.group()
'123'
正規表現は、文字列内で 1 つ以上の連続する数字を探します。
この特定のケースでは、数値シーケンスがあることがわかっていることに注意してください。それ以外の場合は、の戻り値をテストして、有効な参照が含まre.search()
れていることを確認する必要があります。そうでない場合、例外が発生します。m
m.group()
AttributeError:
もちろん、大量の HTML を処理する予定がある場合は、BeautifulSoupを真剣に検討する必要があります。BeautifulSoup の全体的な考え方は、文字列操作または正規表現を使用した「手動」の解析を避けることです。
import re
x = 'Your number is <b>123</b>'
re.search('(?<=Your number is )<b>(\d+)</b>',x).group(0)
これは、「あなたの番号は」文字列に続く番号を検索します
import re
print re.search(r'(\d+)', 'Your number is <b>123</b>').group(0)
最も簡単な方法は、数字(数字)を抽出することです
re.search(r"\d+",text)
val="Your number is <b>123</b>"
m=re.search(r'(<.*?>)(\d+)(<.*?>)',val)
m.group(2)
re.sub(r'([\s\S]+)(<.*?>)(\d+)(<.*?>)',r'\3',val)
次の例を使用して問題を解決できます。
import re
search = re.search(r"\d+",text).group(0) #returns the number that is matched in the text
print("Starting Index Of Digit", search.start())
print("Ending Index Of Digit:", search.end())