正则表达式上的Python拆分字符串 [英] Python split string on regex

查看:41
本文介绍了正则表达式上的Python拆分字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用正则表达式拆分字符串.

Frid​​ay 1Friday 11 JAN 11

我想要实现的输出是

['Friday 1', 'Friday 11', 'JAN 11']

到目前为止,我的代码片段没有产生预期的结果:

<预><代码>>>>进口重新>>>p = re.compile(r'(Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday)\s*\d{1,2}')>>>filter(None, p.split('Friday 1Friday 11 Jan 11'))['星期五'、'星期五'、'1 月 11 日']

我的正则表达式有什么问题?

解决方案

问题在于捕获括号.此语法: (?:...) 使它们无法捕获.试试:

p = re.compile(r'((?:Friday|Saturday)\s*\d{1,2})')

I'm trying to split a string using a regular expression.

Friday 1Friday 11 JAN 11

The output I want to achieve is

['Friday 1', 'Friday 11', ' JAN 11']

My snippet so far is not producing the desired results:

>>> import re
>>> p = re.compile(r'(Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday)\s*\d{1,2}')
>>> filter(None, p.split('Friday 1Friday 11 JAN 11'))
['Friday', 'Friday', ' JAN 11']

What am I doing wrong with my regex?

解决方案

The problem is the capturing parentheses. This syntax: (?:...) makes them non-capturing. Try:

p = re.compile(r'((?:Friday|Saturday)\s*\d{1,2})')

这篇关于正则表达式上的Python拆分字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆