|
比如我现在要梳理一份施工合同清单,对于其中的混凝土项目,可能会有以下几种关键字:
(1)混凝土等级:C15、C20、C25、C30等等;
(2)抗渗等级:无抗渗、P6、P8、P10
(2)混凝土类别:普通混凝土、膨胀混凝土;
(3)混凝土部位:垫层、板、墙柱、梁、其他部位;
膨胀砼的单价和普通砼不一样,垫层位置的单价和其他部位的不一样,不同抗渗等级单价不一样。
对于一个混凝土清单项目的描述,以上4项中,(1)是必须出现的,(2)、(3)、(4)中的膨胀砼、垫层、P6、P8、P10不一定出现。
因为(2)、(3)、(4)各自在描述中出现的先后顺序是固定的,所以我想编一个通用的正则表达式,当这些的关键字出现时就获取他们,不出现就不获取。
比如以下几个字符串:
【1】“C25现浇混凝土,抗渗等级P6”,能够获取到“C25P6”;
【2】“C35膨胀混凝土于后浇带,抗渗等级P8”,能够获取到“C35膨胀混凝土P8”
【3】“C15混凝土垫层”,能够获取到“C15垫层”
我想用.pattern="(\w*).*(膨胀砼)?.*(P[0-9]*)?.*(垫层)?",然后将submatches的内容串起来,但是不管膨胀砼、P[0-9]*、垫层是否在字符中出现,返回的结果都不会显示这几个关键字。
?的意思是代表出现0次或者1次,但计算机进行匹配时,当字符串中包含关键字的时候,也返回0次的结果。请问该怎么改进?
|
|