Python3如何使用正则匹配以A开头、*结尾且中间不含*的字符串
正则匹配实现方案
核心正则表达式
完全匹配要求:以大写A开头、结尾、中间仅包含字母、无符号:
r'A[a-zA-Z]*\*'
如果需要排除A*这类中间无字母的匹配结果,把量词*换成+即可:
r'A[a-zA-Z]+\*'
规则说明
- 开头
A:固定匹配片段首字符为大写A [a-zA-Z]:匹配所有大小写英文字母,天然排除*等非字母字符- 量词
*/+:控制中间字母允许出现的次数,*代表0次或多次,+代表1次或多次 - 末尾
\*:转义匹配星号,确保片段以*结尾
Python 3 完整使用示例
import re # 测试字符串 input_str = "Atest* hello A123* Aworld* demo A* Axyz*end*" # 编译正则(这里用允许中间无字母的版本,可根据需求替换) pattern = re.compile(r'A[a-zA-Z]*\*') # 提取所有匹配结果 matches = pattern.findall(input_str) print(matches) # 输出:['Atest*', 'Aworld*', 'A*', 'Axyz*']
自定义调整方案
- 如果要求首字符不区分大小写(同时匹配A/a开头),可以给正则加
re.IGNORECASE参数,或者把开头的A改成[Aa] - 如果要求中间仅支持小写字母,把
[a-zA-Z]替换为[a-z] - 如果要求中间仅支持大写字母,把
[a-zA-Z]替换为[A-Z]
内容的提问来源于stack exchange,提问作者Sandy
相关产品推荐
相关产品推荐

