我有以下字符串:
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 ']
答案 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
模式详细信息
^
-字符串的开头(.*?)
-捕获组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
。