话不多说,直接上代码:
import re
# 要匹配的字符串对象
str_txt = """
if (!mobileVisit) {
googletag.defineSlot "div-gpt-ad-15390086850-0").addService(googletag.pubads());
}
"""
# print(str_txt)
comment = re.compile(r'div-gpt-ad-(.*?)-0',re.S)
comment1 = comment.findall(str_txt)
print(comment1[0])
若想获取str_txt字符串里面的号码:15390086850
- 使用re正则表达式中的compile函数,在匹配内容的括号中写**(.*?)**
- 其中.*?代表非贪心算法,表示精准的配对
- 在.*?的外面加个括号表示获取括号之间的信息
- 在(.*?)两边加上原文本中要匹配信息两旁的信息,
- 例如要想获得字符串“abcdefg”中的cd,就要在(.*?)里面分别加上ab和efg
- compile中使用的第二个参数是re.S,表示正则表达式会将这个字符串作为一个整体,包括”\n“,如果不使用re.S参数,则只在每一行内进行匹配,如果一行没有,就换下一行重新开始,不会跨行
- compile()函数返回的是一个匹配对象,单独使用无意义,需要和**findall()**函数搭配使用,返回的是一个列表
最后输出结果:
15390086850