只有在python正则表达式中的另一个序列中具有相同数量的字符时,如何匹配特定的字符序列?

2024-09-28 22:22:54 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有办法检查每个唯一字符出现的次数是否相同?是单独使用正则表达式语言还是使用正则表达式和str.count查找有效匹配

这就是我所期望的结果:

xy     -> valid
xxyy   -> valid
xxxyyy -> valid
xyy    -> not valid
xxy    -> not valid

我知道我可以做一些事情,比如:

matches = re.match(r"^x+y+$", myTestStr)

但是有没有办法让“x”的“+”标记与“y”的“+”标记相同? 我也尝试过与团队合作,但也没有成功


Tags: 标记语言countnot字符事情次数xy
1条回答
网友
1楼 · 发布于 2024-09-28 22:22:54

您可以使用递归来实现这一点,但老实说,这不是任务的最佳实践。正则表达式并不意味着是递归的。据我记忆所及,递归并不排除在标准python模块中。我想你需要regex模块

如果允许为空:

\b(x(?1)y|)\b

如果不允许使用空字符串

\b(x(?1)y|(?<=x)(?=y))\b

演示https://regex101.com/r/x0McMc/3

如果您有一个字符串的最大固定长度,您也可以这样做(示例中的最大长度4):

\b(x{1}y{1}|x{2}y{2}|x{3}y{3}|x{4}y{4})\b

https://regex101.com/r/vMl8vv/2

但这看起来很难看,当长度较大时,会产生大量正则表达式

相关问题 更多 >