gpt4 book ai didi

python - 使用正则表达式解析带有单位的值范围

转载 作者:行者123 更新时间:2023-11-30 23:00:44 24 4
gpt4 key购买 nike

我想解析以下字符串:

-32000 ... 0 [foo1] some string not intresting

第一个数字是我的最小值,第二个数字是我的最大值,其中“[]”之间的字符串是我的单位。

我尝试了以下代码:

nums = re.compile(r'.*(?P<minValue>([+-]?\d+(?:\.\d+)?)) \.+ (?P<maxValue>([+-]?\d+(?:\.\d+)?)).*(\[(?P<units>\w+\])?)')
minMaxValues = nums.match(inputString)
print(minMaxValues.group('minValue'), minMaxValues.group('maxValue'), minMaxValues.group('units'))

我得到了结果

 0 0 None

欢迎任何有关修复我的正则表达式的帮助。

备注:

  • 数字可以是小数、负数或正数
  • 最小值和最大值之间的三个点“...”仅在示例中。通常是三点,但必须是。
  • 单位可以包含“无单位”或“1/min”等字符串,而不仅仅是字符串。

最佳答案

您可以使用以下正则表达式/Python 代码(已在评论中提到):

import re
string = "-32000 ... 0 [foo1] some string not intresting"
match = re.match(r'(?P<Pmin>-?\d+)\D+(?P<Pmax>-?\d+).*?\[(?P<Punits>[^]]+)\]', string)
# captures a dash which may or may not be there
# captures digits, minimum 1 time into group 1
# looks for anything that is not a digit (\D+)
# captures digits, minimum 1 time into group 2
# look for square brackets - the unit at the end

print match.group('Pmin')
# output: -32000

在线查看demo on regex101.com .

关于python - 使用正则表达式解析带有单位的值范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35158414/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com