【问题标题】:Python regex search for decimal digits not followed by characterPython 正则表达式搜索不跟随字符的十进制数字
【发布时间】:2018-11-20 03:39:15
【问题描述】:

使用 re.search 查找一个或多个十进制数字,一个可选的 K 字符,后跟不带 '%'。

试过这个:

re.search (r'(\d+K?)(?!%)', s).group (0)

s 具有以下值:

10K 1%
2% 10K
20% 10K

返回:

10K
10K
2

前两个结果是正确的,最后一个不是。我希望数字匹配是贪婪的,跳过“20%”并匹配“10K”。找到了 Java (++) 的解决方案,但没有找到 Python。感谢您对此提供任何提示,在网上进行了广泛搜索,但答案一直难以捉摸。

【问题讨论】:

  • 单词边界是否重要? \b(\d+K?)(?!%)\b 可能会有所帮助。
  • @ggorlen 不,不幸的是他们不是。它可能是像 10K 这样的独立值,也可能是像 100 这样的数字。我正在尝试从原理图中解析一个电阻值,它可能只是一个电阻值,但也可能有百分比容差,按任意顺序,可能没有空格介于两者之间。

标签: python regex


【解决方案1】:

试试正则表达式\d+K?(?= |$)

这将检查 K 之后的空格或行尾。

Regex

【讨论】:

  • 看起来这个对我来说效果很好。我不认为要使用积极的展望而不是消极的。谢谢!
【解决方案2】:

? 表示匹配 0 或 1 次,将模式替换为 (\d+K)(?!%)

【讨论】:

  • 'K' 是可选的。我想我应该在示例中说明这一点。
猜你喜欢
  • 1970-01-01
  • 2014-03-05
  • 1970-01-01
  • 2012-05-03
  • 2021-05-29
  • 1970-01-01
  • 2015-06-20
  • 2017-02-27
  • 1970-01-01
相关资源
最近更新 更多