正则表达式搜索 - 在测试人员中工作,而不是在Spyder中[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式搜索 - 在测试人员中工作,而不是在Spyder中[重复]相关的知识,希望对你有一定的参考价值。

测试在线测试程序中的正则表达式代码是有效的,但在Python中使用它时却没有。我是新手!任何帮助,将不胜感激

我正在尝试搜索带有非捕获组的字符串。

我用这个:

z = re.findall(d+.d (?:dBmV), data1)

这个:

d+.d dBmV

几乎让我在那里,但我不想要dBmV

在这里找到dbmv值:

Rx 6 Link Signal Power  2.5 dBmV
Rx 6 Link SNR   42.5 dB
Rx 7 Link Freq  407 MHz
Rx 7 Link Signal Power  2.5 dBmV
Rx 7 Link SNR   42.5 dB

我只想要价值观,没有文字。我可以得到

[2.5 dBmV, 2.5 dBmV, ...] or []

我在findall的第二个开放括号中得到错误:

  z = re.findall(d+.d (?:dBmV), data1)

SyntaxError:行继续符后面的意外字符

谢谢

答案

正则表达式需要在引号内,并在传递给r时以findall开头。

此外,使用正向前期?=而不是非捕获组?:来捕获dBmV之前的数字。

data1 = "Rx 6 Link Signal Power 2.5 dBmV Rx 6 Link SNR 42.5 dB Rx 7 Link Freq 407 MHz Rx 7 Link Signal Power 2.5 dBmV Rx 7 Link SNR 42.5 dB"

print(re.findall(r"d+.d(?=sdBmV)", data1))

输出:

['2.5', '2.5']
另一答案

看起来您的示例代码中缺少引号。你需要用单个''或双""引用字符包围你的模式。

另外,考虑将(?:dBmV)移动到捕获组之外以使其更易于阅读。

这应该产生你想要的结果:

s = 'Rx 6 Link Signal Power 2.5 dBmV Rx 6 Link SNR 42.5 dB Rx 7 Link Freq 407 MHz Rx 7 Link Signal Power 2.5 dBmV Rx 7 Link SNR 42.5 dB'
z = re.findall('(d+.d+)(?: dBmV)', s)
print(z)

结果:

['2.5', '2.5']

以上是关于正则表达式搜索 - 在测试人员中工作,而不是在Spyder中[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在在线正则表达式测试器中工作的 MariaDB 正则表达式在 SELECT WHERE REGEXP 中不起作用

为啥 PyAudio 在一个模块中工作而不是在另一个模块中工作?

这个 SQL 查询怎么会在 Oracle SQL Developer 中工作而不是在代码中工作?

正则表达式在在线正则表达式测试器中无法在Angular Validators.pattern()中工作

Codeigniter CLI 在终端中工作,而不是在 Cpanel cron 中

如何解决 Http 401 错误,但在邮递员中工作,而不是在 xamarin 表单中工作