python - 正则表达式匹配字符串中的奇数

标签 python regex

我正在尝试使用正则表达式来仅匹配字符串中的奇数。我的想法是检测数字的最后一位是否为奇数,但现在我只能找到除最后一位之外的前(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
^^     ^^    ^^^

Demo

\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/

相关文章:

python - 如何从交互式 shell 访问调用源行

python - cygwin 中保存文件的位置

javascript - 限制特殊字符中的某些字符

JavaScript Regex 执行后有不同的结果

python - 在python中声明空类成员

python - 在 WxPython 面板中嵌入 Seaborn 图

Python - 双条件 data.loc

javascript - 如何在不捕获它的情况下在捕获组 "absorb"之前/之后制作空白?

javascript - 识别字符串中的特殊非字母数字字符

javascript - Node.js中如何通过正则表达式从原始字符串中获取指定长度的连续相同字符?