You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中提取特定格式字符串的最后一个单词(含正则方案)

我来帮你解决这个问题~首先看看你原来的代码哪里出了问题,然后再给你两种可行的方案,包括正则表达式的简便方法:

先分析原代码的问题

你用str.strip("(|)")这里踩了个小坑:strip()方法不支持正则表达式,它只会把括号里的每个字符((、|、))当成单独的去除目标,而你的字符串开头是U,所以这一步根本没起到提取括号内内容的作用;再加上结尾的空格和)没被处理干净,导致后续split('.')后最后一个元素带着多余的符号,自然得不到正确结果。


方案一:修正原有字符串处理逻辑

不用正则,调整步骤就能搞定:

str = 'UPPER("Sales"."PRODUCTS"."PRODUCT_NAME" )'
# 第一步:精准提取括号内的核心内容(去掉开头的UPPER(和末尾的))
content = str[str.find('(')+1 : str.rfind(')')].strip()
# 第二步:按.分割成各个部分
parts = content.split('.')
# 第三步:取最后一部分,去掉首尾的"
val_final = parts[-1].strip('"')
print(val_final)  # 输出 PRODUCT_NAME

思路是先把多余的函数名、括号和空格去掉,再分割处理,彻底避开干扰项。


方案二:用正则表达式快速提取

正则可以一步到位,直接匹配最后一个被"包裹的目标,非常简便:

import re

str = 'UPPER("Sales"."PRODUCTS"."PRODUCT_NAME" )'
# 匹配所有被"包裹的单词,直接取最后一个
matches = re.findall(r'"(\w+)"', str)
if matches:
    val_final = matches[-1]
    print(val_final)  # 输出 PRODUCT_NAME

如果要更精准(比如担心引号内有特殊字符),可以用这个写法:

match = re.search(r'"([^&]+)"\s*\)', str)
if match:
    val_final = match.group(1)
    print(val_final)

这里的正则逻辑是:用"匹配引号转义符,([^&]+)捕获引号内的内容(直到下一个&为止),\s*\)匹配结尾的空格和右括号,确保只抓取最后一个目标。

内容的提问来源于stack exchange,提问作者kavya8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 20:38:12