Skip to main content
 首页 » 编程设计

python之在正则表达式中查找带有大写字母并以特定单词结尾的字符串

2025年05月04日21pander-it

我有一个数据框,其中一列包含具有三种模式的字符串:

1) 仅限大写字母:APPLE COMPANY

2) 大写字母并以字母 AS 结尾:CAR COMPANY AS

3)大小写字母:John Smith

df = pd.DataFrame({'NAME': ['APPLE COMPANY', 'CAR COMPANY AS', 'John Smith']}) 
 
             NAME ... 
0   APPLE COMPANY ... 
1  CAR COMPANY AS ... 
2      John Smith ... 
3             ... ... 

如何把不满足2)和3)条件即1)的行取出来?换句话说,我如何才能取出只有大写字母、不以 AS 结尾或字符串中同时包含大写字母和小写字母的行?

我想到了这个:

df['NAME'].str.findall(r"(^[A-Z ':]+$)") 
df['NAME'].str.findall('AS') 

第一个提取只有大写字母的字符串,而第二个只找到AS。如果除了正则表达式之外还有其他方法,我也很乐意尝试。

预期结果是:

             NAME ... 
1  CAR COMPANY AS ... 
2      John Smith ... 
3             ... ... 

请您参考如下方法:

这个正则表达式应该可以工作:

^(?:[A-Z ':]+ AS|.*[a-z].*)$ 

它匹配以下之一:

  • [A-Z ':]+ AS - 所有大写字母后跟 AS 的大小写
  • .*[a-z].* - 小写字母的大小写

Demo