[英]Need a regular expression in python to separate the signal definitions
包含信号定义的字符串的形式为
signal_a =(3 = box1:soc1.sig_a1 | box1:soc1.sig_a0; 2 = box2:band_x1; 1 = xbox:abis | xbox1:bbs.seg_b; 0 = trip:skip); signal_b = super:mario | repp: ver; signal_c = semi:six_sig; signal_d =(1 = last:end | start:twist; 0 = demo:test)
我想分离信号定义并将其放在列表中。 像下面这样
signalDefList = [
'signal_a=(3=box1:soc1.sig_a1|box1:soc1.sig_a0;2=box2:band_x1;1=xbox:abis|xbox1:bbs.seg_b;0=trip:skip)',
'signal_b=super:mario|repp:ver',
'signal_c=semi:six_sig',
'signal_d=(1=last:end|start:twist;0=demo:test)'
]
有人可以帮我吗?
;(?=signal)
替换: \\n
import re
r = r";(?=signal)"
s = "signal_a=(3=box1:soc1.sig_a1|box1:soc1.sig_a0;2=box2:band_x1;1=xbox:abis|xbox1:bbs.seg_b;0=trip:skip);signal_b=super:mario|repp:ver;signal_c=semi:six_sig;signal_d=(1=last:end|start:twist;0=demo:test)"
print re.split(r,s)
输出:
['signal_a=(3=box1:soc1.sig_a1|box1:soc1.sig_a0;2=box2:band_x1;1=xbox:abis|xbox1:bbs.seg_b;0=trip:skip)', 'signal_b=super:mario|repp:ver', 'signal_c=semi:six_sig', 'signal_d=(1=last:end|start:twist;0=demo:test)']
signal_a =(3 = box1:soc1.sig_a1 | box1:soc1.sig_a0; 2 = box2:band_x1; 1 = xbox:abis | xbox1:bbs.seg_b; 0 = trip:skip); signal_b = super:mario | repp: ver; signal_c = semi:six_sig; signal_d =(1 = last:end | start:twist; 0 = demo:test)
signal_a=(3=box1:soc1.sig_a1|box1:soc1.sig_a0;2=box2:band_x1;1=xbox:abis|xbox1:bbs.seg_b;0=trip:skip)
signal_b=super:mario|repp:ver
signal_c=semi:six_sig
signal_d=(1=last:end|start:twist;0=demo:test)
;
匹配分号字符;
从字面上看 (?=signal)
积极向前看,确保后面的字面意思是signal
因为已经回答了,所以您应该使用;(?=signal)
。
要获得所需的输出,请将其放入re.split()
方法中:
import re
signalDefList = re.split(';(?=signal)', data)
signalDefList
#['signal_a=3=box1:soc1.sig_a1|box1:soc1.sig_a0;2=box2:band_x1;1=xbox:abis|xbox1:bbs.seg_b;0=trip:skip)',
# 'signal_b=super:mario|repp:ver',
# 'signal_c=semi:six_sig',
# 'signal_d=(1=last:end|start:twist;0=demo:test)']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.