python 正则表达式如何截取字符串中间的内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 正则表达式如何截取字符串中间的内容相关的知识,希望对你有一定的参考价值。

请问python中正则表达式如何获取字符串中间指定内容,例如

"forum/135/topic/794150"
我分别想获得135 和794150,正则表达式应该怎么写?
在网上找到的方法都不太对,恳请大牛指教~

示例代码

启动ipython先导入re模块

这里我用到了findall全局匹配,分为两部分,前面是正则,后面是要匹配的字符串

得到一个元祖

通过变量a 就能打印出想要的字符串

扩展资料

在 Python 中,我们可以使用内置的 re 模块来使用正则表达式,re 模块提供了不少有用的函数,用以匹配字符串,比如:

re 模块的一般使用步骤如下:

    使用 compile 函数将正则表达式的字符串形式编译为一个 Pattern 对象

    通过 Pattern 对象提供的一系列方法对文本进行匹配查找,获得匹配结果(一个 Match 对象)

    最后使用 Match 对象提供的属性和方法获得信息,根据需要进行其他的操作

findall 方法的使用形式如下:

findall(string[, pos[, endpos]])

其中,string 是待匹配的字符串,pos 和 endpos 是可选参数,指定字符串的起始和终点位置,默认值分别是 0 和 len (字符串长度)。

findall 以列表形式返回全部能匹配的子串,如果没有匹配,则返回一个空列表。

参考技术A

是需要从字符串中提取数字吗

如图所示:

正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。

Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。

re 模块使 Python 语言拥有全部的正则表达式功能。

compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。

re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。

re.match函数

re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

函数语法:

re.match(pattern, string, flags=0)

re.search方法

re.search 扫描整个字符串并返回第一个成功的匹配。

函数语法:

re.search(pattern, string, flags=0)

re.match与re.search的区别

re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

参考技术B \\w*\\/(\\d+)\\/\\w*\\/(\\d+)

参考技术C import re
pattern = re.compile("forum\\/(\\d*)\\/topic\\/(\\d*)")
res = pattern.search('forum/135/topic/794150').groups()
print res[0],res[1]

本回答被提问者和网友采纳
参考技术D import re

string = "forum/135/topic/794150"
print(re.findall(r'forum/(\d+)/topic/(\d+)',string))

以上是关于python 正则表达式如何截取字符串中间的内容的主要内容,如果未能解决你的问题,请参考以下文章

python提取指定字符中间的内容?

Python 正则表达式匹配两个指定字符串中间的内容

正则表达式截取两个指定字符串之间的内容都有哪些?

javaScript正则表达式截取字符串截取中间截取前面截取后面

javaScript正则表达式截取字符串截取中间截取前面截取后面

正则表达式截取两个指定字符串之间的内容?