处理正则表达式中的空格

时间:2015-09-10 03:33:07

标签: python regex python-3.x

我是一名RegEx新手,这让我在过去48小时里疯狂。在阅读数百个示例和文档时,我尽我所能。我想学习。

我需要从这些字符串中提取月份名称,月份是中间的单词(多语言):

10 july  2014
9 dicembre2014
1januar2011
18août2002 (note: non-[A-z] character in the month if it matters)

我得到的最接近的是[\D]{3,}(?=.{4,})屈服:

' july '
' dicembre'
'januar'
'août'

但它仍然匹配名称周围的空格。我尝试添加[^\s],但显然不是那么简单。

找到正确匹配的最简单的RegEx方式是什么?

1 个答案:

答案 0 :(得分:2)

如果设置re.UNICODE标志,则可以使用unicode属性,因此\w也匹配所有脚本中的所有字母(包括ûñ,{{ 1}}等。然后,á只匹配字母,但来自任何脚本:

  • [^\W\d_]匹配字词(字母,数字或下划线“\w”)
  • _是否定的简写,它匹配非单词字符(与\W相同)
  • [^\w]匹配数字
  • 所以\d会匹配除非字字符,数字或“[^\W\d_]”之外的任何内容......这意味着它只会匹配字母

代码:

_

输出:

#python 3.4.3
import re

str = u"10 july  2014 \n 9 dicembre2014 \n 1januar2011\n 18août2002"
pattern = r'([0-3]?\d)\s*([^\W\d_]{3,})\s*((?:\d{2}){1,2})'
result = re.findall(pattern, str, re.UNICODE)

for date in result :
    print(date)

在线查看here