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

Python正则如何匹配字符串中指定位置为特定字符的单词?

正确正则写法及说明

问题排查

你当前的写法问题有两个:

  1. 所有位置都使用通用字母匹配规则,没有限定第3、5、6位为指定字符
  2. Python标准库re不支持\p{L}语法,该语法需要第三方regex库才能生效

适配你的场景的正确代码

你已经将字符串转为全大写匹配,因此可以直接用简化正则:

import re
res = re.findall(r'S[A-Z]{2}P[A-Z]HO[A-Z]', str_3.upper())

正则规则对应说明:

  • S:匹配第0位固定为S
  • [A-Z]{2}:匹配第1、2位的任意大写字母
  • P:匹配第3位固定为P(因为已经转全大写,不需要额外匹配小写p)
  • [A-Z]:匹配第4位的任意大写字母
  • HO:匹配第5、6位固定为H、O(转全大写后无需匹配小写)
  • [A-Z]:匹配第7位的任意大写字母

不转全大写的兼容写法

如果不想提前处理字符串大小写,可以直接用兼容大小写的正则:

res = re.findall(r'S[a-zA-Z]{2}[Pp][a-zA-Z][Hh][Oo][a-zA-Z]', str_3)

如果需要避免匹配到更长字符串的中间片段,可以在正则前后加单词边界符\b:

# 全大写场景
res = re.findall(r'\bS[A-Z]{2}P[A-Z]HO[A-Z]\b', str_3.upper())
# 兼容大小写场景
res = re.findall(r'\bS[a-zA-Z]{2}[Pp][a-zA-Z][Hh][Oo][a-zA-Z]\b', str_3)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:06:07