微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

REGEX 在一行中匹配一个关键字的数字

如何解决REGEX 在一行中匹配一个关键字的数字

如果您可以使用 Python正则表达式 PyPi 模块,那么您可以多次出现:

(?<=^range\b[\s:$-\d.]*)\d+(?:\.\d+)?

  • (?<=

正面向后看,断言左边是

  • ^range\b``range在字符串的开头匹配
  • [\s:$-\d.]*可以选择匹配可能介于两者之间的所有允许的字符

  • )关闭后向断言

  • \d+(?:\.\d+)?将 1+ 位数字与可选的小数部分匹配

正则表达式演示| Python 演示

例子

import regex

strings = [
"range: $0.82",
"range:0.82",
"range:  0.82 - 0.85",
"range : 0.82 - 0.85",
"range   :  0.82 - 0.85",
"range 0.82   0.85"
]
pattern = r"(?<=^range\b[\s:$-\d.]*)\d+(?:\.\d+)?"

for s in strings:
    print (regex.findall(pattern, s))

输出

['0.82']
['0.82']
['0.82', '0.85']
['0.82', '0.85']
['0.82', '0.85']
['0.82', '0.85']

解决方法

我尝试了许多模式,但无法获得正确的结果。range当行开头有关键字时,我只想匹配浮点数。我的问题是后面range可以跟一个:,:,等等。

我最好的尝试是使用两种模式:

#1。(?i)(?<=range[: ])[:a-zA-Z0-9.$ -]+

#2。[0-9.]+

首先使用模式#1 运行正则表达式,然后获取模式#1 的输出并使用模式#2 再次运行正则表达式

我怎样才能在一个模式中做到这一点?非常感谢

还有一件事:我的代码是 Python

输入: range: $0.82 –> 预期输出:0.82

输入: range:0.82 –> 预期输出:0.82

输入: range: 0.82 - 0.85 –> 预期输出:0.82,0.85

输入: range : 0.82 - 0.85 –> 预期输出:0.82,0.85

输入: range : 0.82 - 0.85 –> 预期输出:0.82,0.85

输入: range 0.82 0.85 –> 预期输出:0.82,0.85table = df.reset_index().groupby(pd.Grouper(key=’index’,freq=‘1D’))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。