我有一个正则表达式模式,它匹配由一个逗号和空格分隔的三个数字,但我现在希望该模式在这些数字之后找到“MHz”或“GHz”
我试过几种模式,但都不管用
failed_patterns = [r'(\d+\, \d+\, \d+\s*Hz)',
r'(\d+\, \d+\, \d+\s*Hz)',
r'(\d+\, \d+\, \d+*Hz)']
# basic pattern
pattern = r'(\d+\, \d+\, \d+)'
string = '915, 868, 433 MHz'
re.findall(pattern, string)
# output: ['915, 868, 433']
正则表达式对我来说还是很新的,所以如果有人能告诉我哪里出了问题,以及如何改变我的模式以得到我需要的结果,我将不胜感激
模式
r"\d+(, | [MG]Hz)"
将使用逗号匹配所有数字,并在结尾处使用MHz或GHz在旁边添加空格r""
:Python用于转义正则表达式内部特殊字符的原始字符串表示法\d+
:等于[0-9]
,匹配任何数字序列(1个或多个)(\d
匹配单个数字)()
:捕获组,如果没有它,regex将尝试只查找数字序列+逗号和空格+M/GHz组合, | [MG]Hz
:匹配组合(,
)或(GHz
或MHz
)此模式适用于您的测试示例:
r'(\d{0,3}, \d{0,3}, \d{0,3} [MG]Hz)'
您可以创建两个组,一个用于三个数字的序列,另一个用于单元
输出:
相关问题 更多 >
编程相关推荐