繁体   English   中英

在python中需要一个正则表达式来分隔信号定义

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM