我有一组信息(数据),如下所示:
data1 = KRBRP0 29.18ZHSFP0 37.33
为拆分这些信息,我使用以下表达式:
re.split('([[a-zA-Z] {5} 0 \ s * \ d +。\ d +)',data2)
但是在我的数据中,我有一些具有不同的模式,如下所示:
data2 = EMG1P0119.44AFJ P0127.44KRBRP0 29.18ZHSFP0 37.33
能否让我用来拆分第二个模式(data2)的表达式?
谢谢
答案 0 :(得分:0)
您可以使用以下模式在正则表达式中使用“或”:(this | that)。要不捕获,可以在捕获组内部使用?:,例如:
import re
data1 = "KRBRP0 29.18ZHSFP0 37.33"
data2 = "EMG1P0119.44AFJ P0127.44KRBRP0 29.18ZHSFP0 37.33"
regex = r"([a-zA-Z]*\s*(?:P0|1P0)\s*[0-9]+.[0-9]+)"
print re.findall(regex, data1)
print re.findall(regex, data2)
# Outputs:
# ['KRBRP0 29.18', 'ZHSFP0 37.33']
# ['EMG1P0119.44', 'AFJ P0127.44', 'KRBRP0 29.18', 'ZHSFP0 37.33']
但是您甚至不需要“或”,您可以简单地使用另一个0或多个(*),例如1:regex = r"([a-zA-Z]*\s*1*P0\s*[0-9]+.[0-9]+)"
。