要实现多个条件的正则, 正常应该是如下形式的
功能主要是搜索列名里面满足条件的OES_sensors, 条件是两个, 或的关系'Step10_.*nm_Avg| Step10_.*nm_Stddev'
这里前面step 是一个循环, 后面Avg 或者stddev 是在featurelist 里面去循环取, 然后拼接
regex = 'Step10_.*nm_Avg| Step10_.*nm_Stddev'
由于我这里面还要拼接用了
regex = [config_step +'_.*nm_'+ statsfeature for statsfeature in featurelist]
如何把这个regex 变成上面想要或的形式呢?
下面写的defin_sensor_type_WLDC 底下的形式也可以满足使用条件, 但是写的有点麻烦 , 请问如何简化一下呢
def List_Search_keyword(list_char,regex):
match_values = []
for char in list_char:
match_char = re.match(regex,char)
if match_char is not None:
match_value = match_char.group()
if match_value in list_char:
match_values.append(match_value)
return match_values
def define_sensor_type_WLDC(allsensors,config_step,featurelist):
RFH_sensors = sorted(list(set(List_Search_keyword(allsensors,config_step +'_.*\[RFTime]_Avg'))))
OES_sensors = []
for statsfeature in featurelist:
OES_sensorf = sorted(list(set(List_Search_keyword(allsensors,config_step +'_.*nm_'+ statsfeature))))
OES_sensors.extend(OES_sensorf)
measure_sensors = sorted(list(set(allsensors).difference(set((RFH_sensors+OES_sensors)))))#setting_sensors + TimeUsed_sensors
return(RFH_sensors,OES_sensors,measure_sensors)#TimeUsed_sensors,setting_sensors,
我大概懂了你的意思啦,你是要搜索
step10_XXX.Xnm_NNN
其中
XXX.X
表示200-800的数字值,这些数字也是一个列表中?还是随意组合,是否到800?如果仅仅是数值,有1位小数(不包括800.0),标准表示应该为[2-7]\d\d\.\d
NNN
是从featurelist
列表中获取的多个值。对应的规则表达式是
比如
对应
regex
为'Step10_[2-7]\d\d\.\dnm_(Avg|Stddev|AAA)'
如果
config_step
也是循环中取值,比如在config_steps
中,则可以一次性获取一个规则式列表: