2024-09-28 23:16:39 发布
网友
我有一个字符串列表,如果前面没有数字,我想使用正则表达式来获得一个数字
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']
我希望它只返回'5GHz',第一个字符串不应该有任何匹配项。如何修改模式以获得所需的输出
最新答案
import re a = ['5.8 GHz', '5 GHz', '8 GHz', '1.2', '1.2 Some Random String', '1 Some String', '1 MHz of frequency', '2 Some String in Between MHz'] res = [] for fr in a: if re.match('^[0-9](?=.[^0-9])(\s)[GM]Hz$', fr): res.append(fr) print(res)
输出: ['5 GHz', '8 GHz']
['5 GHz', '8 GHz']
>>> strings = ['5.8 GHz', '5 GHz'] >>> >>> for s in strings: ... match = re.match(r'^[^0-9]*([0-9] [GM]Hz)', s) ... if match: ... print(match.group(1)) ... 5 GHz
根据我的评论,您似乎可以使用:
(?<!\d\.)\d+\s[GM]?Hz\b
这符合:
(?<!\d\.)
\d+
[GM]?Hz
\b
最新答案
输出:
['5 GHz', '8 GHz']
根据我的评论,您似乎可以使用:
这符合:
(?<!\d\.)
-断言位置的负查找不在任何一位数字和文字点之后李>\d+
-1+个匹配频率整数部分的数字李>[GM]?Hz
-可选大写字母G或M后跟“Hz”李>\b
-单词边界李>相关问题 更多 >
编程相关推荐