【发布时间】:2021-04-06 11:18:19
【问题描述】:
我有一个字符串列表,如果前面没有数字,我想使用正则表达式来获取单个数字。
strings = ['5.8 GHz', '5 GHz']
for s in strings:
print(re.findall(r'\d\s[GM]?Hz', s))
# output
['8 GHz']
['5 GHz']
# desired output
['5 GHz']
我希望它只返回“5 GHz”,第一个字符串不应该有任何匹配项。如何修改我的模式以获得所需的输出?
【问题讨论】:
-
您的意思是要在模式的开头包含“^”吗?在第一个“s”上有效地输出一个空列表。
-
不,因为我还有其他以其他字符和句子开头的字符串,所以我需要一个通用的解决方案
-
也许在您的样本中反映这种类型的数据是明智的。看看你现在写的东西,你可以看到
r'(?<!\d\.)\d+\s[GM]?Hz'是否成功了? -
这也可以,但你能解释一下为什么第一位在括号里吗?
-
效果很好!如果您将其发布为答案,我会接受它
标签: python python-3.x regex