You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何使用正则表达式提取文本每行的最后一个单词?

解决正则提取每行最后一个含特殊字符的单词问题

嘿,我注意到你现在用的正则表达式re.findall(r'\s(\w+)$', content, re.MULTILINE)没法正确提取目标单词——因为你的目标单词里包含/+这类特殊字符,而\w只能匹配字母、数字和下划线,完全覆盖不到这些符号,所以才会提取失败。

给你两个靠谱的解决方案:

方案1:精准匹配目标字符集

如果你的目标单词只会包含字母、数字、_/+=这些符号,可以直接把这些字符放进字符集里:

lastwords = re.findall(r'\s([\w/+=-]+)$', content, re.MULTILINE)

这个正则里的[\w/+=-]明确指定了允许的字符类型,能精准匹配你给出的示例单词。

方案2:通用匹配(更推荐)

如果不确定目标单词还会出现什么特殊字符,直接用反向字符集匹配所有非空白字符会更稳妥:

lastwords = re.findall(r'\s([^\s]+)$', content, re.MULTILINE)

这里的[^\s]表示匹配除了空白(空格、换行、制表符等)之外的任意字符,+表示匹配1次或多次,不管单词里有什么特殊符号,只要它是每行末尾的非空白内容,都能被准确抓出来。

测试示例

假设你的content内容是:

sfdsa AAAAB3NzaCLkc3M
gadsgadsg AAAB3NzaCl/Ezfl
dogjasdpgpds AAAB3Nza/ClBAm+4lj

用方案2的正则提取后,lastwords会得到:['AAAAB3NzaCLkc3M', 'AAAB3NzaCl/Ezfl', 'AAAB3Nza/ClBAm+4lj'],完全符合你的需求。

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

火山引擎 最新活动