在大写之前提取元素

时间:2019-12-26 17:21:01

标签: python regex string uppercase

我有以下字符串:

text = '6 rue du Bras de Fer MONTPELLIER France'

我只想提取“ 6 rue du Bras de Fer” 我正在尝试使用正则表达式提取此部分,这是我的正则表达式代码:

re.findall(r'(.*)[A-Z]+',text)

但它返回我:

['6 rue du Bras de Fer MONTPELLIER ']

3 个答案:

答案 0 :(得分:3)

要为此事做个警告:

re.findall(r'^(.*)(?=\s+[A-Z]{2})',text)

这匹配空格后至少两个大写字母之前。

答案 1 :(得分:2)

您最多可以提取仅包含两个或多个大写字母的第一个单词:

m = re.search(r'^(.*?)\s*\b[A-Z]{2,}\b', text)
if m:
    print(m.group(1)) # => 6 rue du Bras de Fer

请参见regex demoPython demo

模式详细信息

  • ^-字符串的开头
  • (.*?)-捕获组1:除换行符外的任何0个或更多字符
  • \s*-超过0个空格
  • \b-单词边界
  • [A-Z]{2,}-两个或更多大写字母
  • \b-单词边界。

答案 2 :(得分:0)

请尝试以下代码:

import re
text = '6 rue du Bras de Fer MONTPELLIER France'
re.findall(r'(.*)[a-z]+ ',text)

您必须在A中将a更改为Z,并将z更改为[A-Z]。另外,您需要在正则表达式的末尾加上space