我引用了一段文字:
"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提取:之后的所有数字,比如在Python中:
"8.40 6.5 0.0 5 6.50 6"你能告诉我如何处理这个任务吗?谢谢。
我只是更新一下我所做的事情:
(?<!\:)\d{1,2}\.?\d*?使用Ngo&#-225;n: 8.40 Zữ kăn: 6.5 Kịch zuử: 0.0 Đoan l"&#-237;;: 5 GTBH: 6.50 KH: 6作为测试字符串。见这里的演示。
此模式捕获十六进制值:225和237。我们能修改一些东西来提取这些吗?
发布于 2020-10-31 10:33:55
您可以在下面的正则表达式中使用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']发布于 2020-10-31 11:52:22
您尝试的模式(?<!\:)\d{1,2}\.?\d*?以一个数字开始匹配,直接向左断言的不是:,在示例中,所有数字的数据都是正确的。
由于冒号后面有一个或多个空格,所以可以使用捕获组而不是查找:
:[^\S\r\n]+(\d+(?:\.\d+)?)解释
:匹配[^\S\r\n]+匹配没有换行符的1+空格字符( Capture group 1 \d+(?:\.\d+)?将1+数字与可选的十进制部分匹配。)闭组1使用PyPi正则模,如果空格字符可以是可选的,还可以在左边断言:,在匹配数字之前先断言0+空格字符:
(?<=:\s*)\d+(?:\.\d+)?作为另一种选择,为了从示例数据中获取所需的数字,而不是检查左边的:,您还可以在右边直接断言没有;:
\d+(?:\.\d+)?\b(?!;)发布于 2020-10-31 10:23:15
试试这个:
re.findall(":\\s*([0-9.]+)",s)
https://stackoverflow.com/questions/64618790
复制相似问题