当前位置: 首页 > 知识库问答 >
问题:

Python正则表达式查找由3个数字组成的序列,后跟特定字符串

蒙勇
2023-03-14

我有一个正则表达式模式,它匹配由单个逗号和空格分隔的三个数字,但我现在希望该模式在这些数字之后找到“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']

正则表达式对我来说还是很新的,所以如果有人能告诉我哪里出了问题,以及如何改变模式以获得所需的结果,我将不胜感激

共有3个答案

须巴英
2023-03-14

模式r“\d(,|[MG]Hz)”将用逗号匹配所有数字,并在末尾用MHz或GHz匹配其旁边的额外空格。

Python用于转义正则表达式内部特殊字符的原始字符串表示法:等于[0-9],匹配任何数字序列(1或更多)(\d将单个数字匹配起来)
():捕获组,如果没有它,正则表达式将尝试仅查找数字序列逗号和空格M/GHz组合,|[MG]Hz:。

翟昊明
2023-03-14

您可以创建两个组,一个用于三个数字的序列,另一个用于单元

import re
pattern =  r'(\d+, \d+, \d+) ([MG]Hz)'
string = '915, 868, 433 MHz'
list_match =re.findall(pattern, string)
for match in list_match:
    print("numbers: {} and unit: {}".format(match[0], match[1]))

输出:

numbers: 915, 868, 433 and unit: MHz
张宣
2023-03-14

此模式适用于您的测试示例:r'(\d{0,3}、\d{0,3}、\d{0,3}[MG]Hz)

 类似资料:
  • 我用Python编写了这个正则表达式并在regex101上进行了测试,但它仍然没有按照我想要的方式工作: 我试图找到的是一种模式,其中字符串可以选择以这些符号之一开头或结尾,中间只有数字: 该列表包括破折号、正斜杠、反斜杠、括号、符号、空格和句号。如果字符串只包含中间的数字,并且在字符串的开头和/或结尾有可选标点,则搜索应返回true。 此正则表达式似乎适用于大多数情况,但如果我在中间的数字中添加

  • 问题内容: 我需要有关正则表达式的帮助:我正在尝试检查一个句子是否包含特定单词。 让我们以这个主题的标题为例: “正则表达式以查找字符串中的特定单词” 我需要查找它是否包含 if ,在这种情况下它是错误的。 我无法使用包含的方法,因为在这种情况下它将返回true( 如果为 * ic, 则为 spec * ) 我当时在考虑使用方法匹配,但我有点正则表达式。 基本上,匹配方法输入中的正则表达式需要指定

  • 问题内容: 我想用以下代码查找字符串中的所有数字: 我还尝试将定界符添加到正则表达式,使用正数作为的第二个参数,使用仅数字字符串,例如“ 123”作为第一个参数… 但是输出总是 我似乎想念一下正则表达式在Go中的工作原理,但是无法绕开它。这不是有效的表达方式吗? 问题答案: 问题出在你的第二个整数参数上。引用以下软件包的文档: 这些例程使用一个额外的整数参数n;如果n> = 0,则该函数最多返回n

  • 我需要一些正则表达式方面的帮助:我正在尝试检查一个句子是否包含特定的单词。 让我们以本主题的标题为例: “在字符串中查找特定单词的正则表达式” 我需要找出它是否包含if这个词,在这个例子中它是假的。 我不能使用方法包含,因为它在这种情况下会返回true(规范*if*ic) 我在考虑使用matches方法,但我对正则表达式有点不在行。 基本上,匹配方法的输入中的正则表达式需要指定在我要查找的单词之前

  • 我有3个正则表达式,但当模式匹配时执行相同的操作,所以我考虑将所有三个表达式合并为一个。我尝试了很多,但无法让“|”I.e”或“在我的正则表达式中工作 regex1:<代码>文本。替换(/([\u00A9-\u3299])/g,函数myFunction(x){…} regex2: regex3: 我试过这样做,但它不起作用regex:

  • 我目前拥有的正则表达式是: 它捕获了其中一个“.”(第1组)第2-4组为空 或: 一组小写、点、破折号。以小写字母开头(第2组) ——后跟可选星号(第3组) ——后跟方括号内的可选内容(第4组) 我有两个问题,第一个是让第二组必须以字母结尾,我尝试了很多方法,包括: 能杀死3-4组的任何生物 这似乎没什么不同 我遇到的另一个问题是组4,它不依赖于方括号(这是有意义的,因为我有*字符为他们)...但