Python 提取大写前的元素
我有以下字符串:Python 提取大写前的元素,python,regex,string,uppercase,Python,Regex,String,Uppercase,我有以下字符串: text = '6 rue du Bras de Fer MONTPELLIER France' 我只想提取“法尔布拉斯街6号” 我正在尝试使用正则表达式来提取此部分,这是我的正则表达式代码: re.findall(r'(.*)[A-Z]+',text) 但它让我回想起: ['6 rue du Bras de Fer MONTPELLIER '] Lookaheads是为以下目的而设计的: re.findall(r'^(.*)(?=\s+[A-Z]{2})',text)
text = '6 rue du Bras de Fer MONTPELLIER France'
我只想提取“法尔布拉斯街6号”
我正在尝试使用正则表达式来提取此部分,这是我的正则表达式代码:
re.findall(r'(.*)[A-Z]+',text)
但它让我回想起:
['6 rue du Bras de Fer MONTPELLIER ']
Lookaheads是为以下目的而设计的:
re.findall(r'^(.*)(?=\s+[A-Z]{2})',text)
这至少在空格后的两个大写字母之前匹配。您可以提取所有仅由两个或更多大写字母组成的第一个单词:
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个或更多字符(.*)
-0+空格\s*
-单词边界\b
-两个或多个大写字母[A-Z]{2,}
-单词边界\b
- 请尝试以下代码:
import re
text = '6 rue du Bras de Fer MONTPELLIER France'
re.findall(r'(.*)[a-z]+ ',text)
您必须在
[A-Z]
中将A
更改为A
,将Z
更改为Z
。另外,在正则表达式的末尾需要一个空格。认为真正的解决方案是在大写字母之前提取,在
前后都没有大写字母的最后一个大写字母
(?:[^A-Z]|)(?)
扩大
(?:
[^A-Z]
|
(?<! [A-Z] )
[A-Z]
(?! [A-Z] )
)+
(?= [A-Z] )
(?)
[^A-Z]
|
(?re.split(r'\s*\b[A-Z]{2,}\b',text)[0]
需要进行后处理:结果['6 rue du Bras de Fer','']
@Jean-Françoisfare谢谢。修复