请帮助理解为什么r'\b\w+(?=\d)(?=[A-Z])'Python3A不匹配.

它说r'\b\w+(?=\d)(?=[A-Z])'搜索单词,后跟一个数字,然后是一个大写字母.Python3A由单词Python后跟数字3和大写字母A组成.如果这句话是正确的,那么它应该匹配Python.

Multiple Positive Lookaheads enter image description here

推荐答案

它不匹配,因为您在同一位置有两个LookHead,其中一个断言数字,另一个断言大写字母.因为它们之间没有重叠,所以其中一个不可能是真的,因此匹配失败.您需要的只是一个数字后跟大写字母的单一查找:

\b\w+(?=\d[A-Z])

regex101上的Regex演示

Python-3.x相关问答推荐

如何使用regex将电话号码和姓名从文本字符串中分离出来

如何查找以开头并替换的字符串

Python (pandas) - 判断一个 df 中的值是否在另一个(不相等)df 中的任何对之间

如何统计一个值连续出现的次数?

如何确保 GCP Document AI 模型输出与输入文件同名的 JSON?

嵌套协议的使用(协议成员也是协议)

Python3:是否可以将变量用作函数调用的一部分

如何使用`re.findall`从字符串中提取数据

使用条件参数为 super() 调用 __init__

如何在Pandas 中按条件计算分组?

使用 selenium 加速网页抓取

为什么 Multiprocessing 的 Lock 不会阻止其他进程使用对象?

根据另一列值对多个数据框列进行分组

参数化泛型不能与类或实例判断一起使用

解包时是否可以指定默认值?

UnicodeDecodeError:utf-8编解码器无法解码位置 1 的字节 0x8b:无效的起始字节,同时读取Pandas中的 csv 文件

为什么等效的 Python 代码要慢得多

对字节进行按位运算

为现有项目创建virtualenv

什么是ANSI_X3.4-1968编码?