如何用Python正则匹配重复文本块中第三行的浮点数?
提取Expected行浮点数的正则方案
直接用这个正则表达式就能精准提取每段第三行里的浮点数:
^Expected : (-?\d+(?:,\d+)?)
正则拆解(针对不熟悉正则的你)
^:在多行模式下,匹配每一行的开头,确保只找以Expected :开头的行Expected ::完全匹配固定的前缀文本,避免误匹配其他行(-?\d+(?:,\d+)?):捕获需要的浮点数,各部分作用:-?:匹配可选的负号(支持负数)\d+:匹配1位或多位整数(比如0、10、-5里的整数部分)(?:,\d+)?:可选的小数部分,?:表示这是个非捕获组(不单独提取这部分),,\d+匹配逗号加1位或多位数字,?表示小数部分可以没有(支持整数形式的数值)
使用注意
要开启多行模式(不同语言里设置方式不同):
- Python中用
re.MULTILINE或缩写re.M:
import re text = """Test Choice : Q1 Expected : 0,5 Test Choice : Q1 Expected : -3,14 Test Choice : Q1 Expected : 10 """ results = re.findall(r"^Expected : (-?\d+(?:,\d+)?)", text, re.M) print(results) # 输出: ['0,5', '-3,14', '10']
- JavaScript中用
/gm标志:
const text = `Test Choice : Q1 Expected : 0,5 Test Choice : Q1 Expected : -3,14 Test Choice : Q1 Expected : 10`; const regex = /^Expected : (-?\d+(?:,\d+)?)/gm; const results = [...text.matchAll(regex)].map(match => match[1]); console.log(results); // 输出: ['0,5', '-3,14', '10']
这个正则能覆盖你提到的-10到10范围内的所有情况,包括整数、带逗号小数的正数和负数。
内容的提问来源于stack exchange,提问作者Jin
相关产品推荐
相关产品推荐

