正则表达式搜索 - 在测试人员中工作,而不是在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()中工作