Python 正则表达式用于匹配十六进制字符和复数字符之间的数字
我引用了一段文字:Python 正则表达式用于匹配十六进制字符和复数字符之间的数字,python,regex,Python,Regex,我引用了一段文字: "Ngo&#-225;n: 8.40 Zữ kăn: 6.5 Kịch zuử: 0.0 Đoan l"&#-237;;: 5 GTBH: 6.50 KH: 6" 我想使用正则表达式提取Python中:之后的所有数字,如下所示: "8.40 6.5 0.0 5 6.50 6"
"Ngo&#-225;n: 8.40 Zữ kăn: 6.5 Kịch zuử: 0.0 Đoan l"&#-237;;: 5 GTBH: 6.50 KH: 6"
我想使用正则表达式提取Python中:
之后的所有数字,如下所示:
"8.40 6.5 0.0 5 6.50 6"
你能告诉我怎么做这个任务吗?谢谢
我只是更新我所做的:
(?
使用Ngo-225;n:8.40zữ kăn:6.5 kị楚国ử: 0.0Đoan l“-237;;:5 GTBH:6.50 KH:6
作为测试字符串。请参阅
Sill,此模式捕获十六进制值:225
和237
。我们可以修改一些内容来提取这些值吗?试试这个:
re.findall(“:\\s*([0-9.]+)”,s)
您可以将re.findall
与以下正则表达式一起使用
:\s*([\d\.]+)
我还在Python上测试了结果
import re
string = "Ngo&#-225;n: 8.40 Zữ kăn: 6.5 Kịch zuử: 0.0 Đoan l\"&#-237;;: 5 GTBH: 6.50 KH: 6"
regex = re.compile(r":\s*([\d\.]+)")
result = regex.findall(string)
print(result)
结果
['8.40', '6.5', '0.0', '5', '6.50', '6']
您尝试的模式(?以一个数字开始匹配,断言直接在左边的不是:
,在示例中,所有数字的数据都是正确的
由于冒号后面有1个或多个空格,因此可以使用捕获组而不是查找组:
:[^\S\r\n]+(\d+(?:\.\d+)?)
解释
:
逐字匹配
[^\S\r\n]+
匹配1+空格字符,不带换行符
(
Capturegroup 1
\d+(?:\。\d+)
将1+位与可选的小数部分匹配
)
关闭第1组
|
使用,如果whitspace字符是可选的,您还可以在匹配数字之前在左侧断言:
,后跟0+空白字符:
(?<=:\s*)\d+(?:\.\d+)?
你试过什么吗?太好了!有一件事你可以解释一下,当我测试你建议的模式时:“\s*([\d\.]+)”在线。结果仍然保留冒号”:“但是当我使用re.compile和re.findall运行时,结果是完美的?当我们使用捕获组的findall
时。函数findall
只返回捕获的组。你可以阅读本文:感谢有用的文章。感谢第四只鸟!你的答案也是完美的。”。
\d+(?:\.\d+)?\b(?!;)