我对Python正则表达式中的重复模式感到困惑。 我从文档中看到'*'表示重复零次N次。假设我有一个字符串abc123def
。我想找到包含数字字符的字符串的位置,所以我用下面的代码:关于在python中重复模式的困惑Regex
p = re.compile(r'[\d]*')
p.search('abc123def').span()
,并将其输出(0,0)
如果我改变了正则表达式来[\d]+
,它输出(3,6)
。
为什么正则表达式r'[\d]*'
不起作用? 谢谢。
我对Python正则表达式中的重复模式感到困惑。 我从文档中看到'*'表示重复零次N次。假设我有一个字符串abc123def
。我想找到包含数字字符的字符串的位置,所以我用下面的代码:关于在python中重复模式的困惑Regex
p = re.compile(r'[\d]*')
p.search('abc123def').span()
,并将其输出(0,0)
如果我改变了正则表达式来[\d]+
,它输出(3,6)
。
为什么正则表达式r'[\d]*'
不起作用? 谢谢。
它确实有效。 [\d]*
(顺便说一句,括号是不必要的 - \d*
将完全相同)匹配任何数字序列,包括0数字,即。一个空字符串。空字符串在任何地方匹配,特别是在字符串的开头。如果您想要非空数字序列,请使用\d+
,就像您已经做过的一样。
它确实有效,它会在字符串的开头找到一个零长度的字符串。
啊,好的,挺棘手的。他已经注意到了 – lenhhoxung