我正在尝试使用正则表达式来仅匹配字符串中的奇数。我的想法是检测数字的最后一位是否为奇数,但现在我只能找到除最后一位之外的前(n-1)位数字。
例如,下面的代码适用于奇数13
,这是完美的!但当转向132
时,代码仍然返回13,这肯定失败了。那么,我如何操作代码并让它适用于所有以奇数结尾的数字(无论有多大)?谢谢!
match= '(\s*\d*[13579]\s*)'
print(re.search(match, "The number 13 matches")) #<re.Match object; span=(10, 14), match=' 13 '>
print(re.search(match, "The number 132 matches")) #<re.Match object; span=(10, 13), match=' 13'>
最佳答案
你可以匹配
\d+(?!\d)(?<=[13579])
23 132 87 74 101
^^ ^^ ^^^
\d+ # match one or more digits
(?! # begin negative lookahead
\d # match a digit
) # end negative lookahead
(?<= # begin positive lookbehind
[13579] # match an odd digit
) # end positive lookbehind
(?!\d)
可以替换为 (?=\D|$)
,这是一个正向前瞻,断言匹配后面跟着一个非数字或位于字符串末尾。
关于python - 正则表达式匹配字符串中的奇数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69623056/