Python 正则表达式搜索和拆分

标签 python regex

在 PHP 中,可以使用带有标志 PREG_OFFSET_CAPTURE 的函数 preg_match 来搜索字符串中的正则表达式模式并知道后面是什么,什么在前。例如,给定字符串 aaa bbb ccc ddd eee fff,我想匹配拆分 r'ddd' 并具有:

before = 'aaa bbb ccc '
match = 'ddd'
after = ' eee fff'

如何在 python 中执行此操作?谢谢

最佳答案

您可以使用 re.split() 但您需要在模式两边加上括号以保存匹配:

>>> re.split('(ddd)', 'aaa bbb ccc ddd eee fff', 1)
['aaa bbb ccc ', 'ddd', ' eee fff']

但在这种情况下,您根本不需要正则表达式:

>>> 'aaa bbb ccc ddd eee fff'.partition('ddd')
('aaa bbb ccc ', 'ddd', ' eee fff')

编辑: 我可能还应该提到,使用 re.split 你会得到所有匹配的组,所以你需要为此做好准备,或者在你会使用的任何地方使用非捕获组优先括号:

>>> re.split('(d(d)d)', 'aaa bbb ccc ddd eee fff', 1)
['aaa bbb ccc ', 'ddd', 'd', ' eee fff']

关于Python 正则表达式搜索和拆分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8970524/

相关文章:

python - 如何在 C 代码中返回 pyrun_simplefile 的输出

python - 计算 numpy.array 对象列表中 numpy.array 对象的出现次数

python - 除非导入,否则 distutils.spawn 不可用

javascript - 大写每个单词的第一个字母,\b\w 也适用于 I'm

python - groupby 在带有文本的列中使用时返回多级数据框

python - Django 中的嵌套 GROUP BY : returning Objects

regex - sed:具有逆向先行匹配的嵌套组

regex - 找到包含字母表 {a, b} 上的子字符串 aba 的字符串的正则表达式? (形式语言理论)

php:从网页中提取特定标签之间的文本

java - 正则表达式根据分割索引处的长度和相邻字符分割字符串