提取大写前的元素

2024-06-26 17:40:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下字符串:

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

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

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

但它回报了我:

['6 rue du Bras de Fer MONTPELLIER ']

Tags: 字符串代码textrederegexdufrance
3条回答

看,头是为这个做的:

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

这至少在空格后的两个大写字母之前匹配。你知道吗

认为真正的解决方案是在大写字母之前提取,全部在
在之前和之后都没有大写字母的最后一个大写字母。你知道吗

(?:[^A-Z]|(?<![A-Z])[A-Z](?![A-Z]))+(?=[A-Z])

https://regex101.com/r/9vpFjj/1

扩展

 (?:
      [^A-Z] 
   |  
      (?<! [A-Z] )
      [A-Z] 
      (?! [A-Z] )
 )+
 (?= [A-Z] )

您可以提取仅由两个或两个以上大写字母组成的第一个单词的所有字符:

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-单词边界。你知道吗

相关问题 更多 >