Python正则表达式示例

Saq*_*qib 38 python regex

我想在Python中编写一个简单的正则表达式,从HTML中提取一个数字.HTML示例如下:

Your number is <b>123</b>
Run Code Online (Sandbox Code Playgroud)

现在如何提取"123",即字符串"您的号码是"后的第一个粗体文本的内容?

Yev*_*kiy 54

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]
Run Code Online (Sandbox Code Playgroud)

  • 抱歉不够清楚,但是我使用了一个对我有用的稍微修改过的版本。re.search("你的号码是&lt;b&gt;(\[a-zA-Z_][a-zA-Z_0-9]*)&lt;/b&gt;",loginData) (2认同)

Lev*_*von 23

鉴于s = "Your number is <b>123</b>"此:

 import re 
 m = re.search(r"\d+", s)
Run Code Online (Sandbox Code Playgroud)

会工作并给你

 m.group()
'123'
Run Code Online (Sandbox Code Playgroud)

正则表达式在字符串中查找一个或多个连续数字.

请注意,在这种特定情况下,我们知道会有一个数字序列,否则你必须测试返回值re.search()以确保m包含有效的引用,否则m.group()会导致AttributeError:异常.

当然,如果你要处理大量的HTML,你需要认真看看BeautifulSoup - 它就是为了这个而已.BeautifulSoup的整个想法是避免使用字符串操作或正则表达式进行"手动"解析.

  • 为什么投反对票?据我所知,这是功能性的并且符合 OP 的要求。我很乐意纠正任何错误或改进我的答案*如果*给出建设性的反馈。但是,没有***解释的downvotes ***无助于OP,SO或我。 (2认同)

muf*_*fel 11

import re
x = 'Your number is <b>123</b>'
re.search('(?<=Your number is )<b>(\d+)</b>',x).group(0)
Run Code Online (Sandbox Code Playgroud)

这将搜索"您的号码是"字符串后面的数字

  • 如果你只想要123,你不想要`.group(1)`? (7认同)

Jac*_*ham 5

import re
print re.search(r'(\d+)', 'Your number is <b>123</b>').group(0)
Run Code Online (Sandbox Code Playgroud)