性吧杏吧,手机色情直播破解版,杏杏吧在线

EPLAN中正則表達(dá)式的一則應(yīng)用案例

2022/8/23 10:46:58 人評論 次瀏覽 分類:DCS  文章地址:http://prosperiteweb.com/tech/4408.html

正則表達(dá)式(Regular Expression)描述了一種字符串匹配的模式(pattern),可以用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等。正則表達(dá)式在編程界、增強(qiáng)文本編輯器界家喻戶曉,人盡皆知;在辦公界、工程設(shè)計(jì)界則聞?wù)吡攘?。知者不惑,受益頗多;不知者無過,沒啥損失。

EPLAN作為ECAD領(lǐng)域里的“閬苑仙葩”(注:出自于《紅樓夢》的經(jīng)典詞曲《枉凝眉》,指仙界的花草),支持正則表達(dá)式不足為奇。不過大多數(shù)情況下,客戶都用不到它,所以多數(shù)人并不知悉它的存在,這么多年來,筆者也就用過不到20回,屬于壓箱底落灰的狀態(tài)。


昨天有個客戶問了一個問題:在結(jié)構(gòu)標(biāo)識總覽報表中,想要有一列用于顯示結(jié)構(gòu)標(biāo)識符的前綴(也就是前綴和標(biāo)識符拆分為兩列顯示),參考下方的“前序符號”列和“代號”列。EPLAN的可選屬性雖然多,但找不到所需要的屬性。客戶為此感到困擾。

結(jié)構(gòu)標(biāo)識總覽報表

身美女常說“這么多男生,沒有一個是我愛的”,此時的客戶心里說“這么多屬性,沒有一個是我要的”。

屬性列表

找不到想要的屬性該怎么辦呢?昌暉儀表給想了兩個辦法:簡單的辦法、高效的辦法。簡單的意思是動腦少一些;高效的意思是動手少一些。按照《高效能人士的七個習(xí)慣》中的觀點(diǎn),“個人永遠(yuǎn)有選擇的自由”、“個人應(yīng)為自己的選擇負(fù)責(zé)(不怨天不尤人)”。因此,哪種方法適合你,取決于你自己的選擇。


方法一:使用一個新的屬性

既然找不到現(xiàn)成的可用屬性,那我就使用一個另外的屬性,比如Structure Description 2<1007>(結(jié)構(gòu)描述2),將其插入到報表表格中。

通過主菜單“項(xiàng)目數(shù)據(jù)→結(jié)構(gòu)標(biāo)識符管理”,打開對話框。點(diǎn)擊鼠標(biāo)右鍵,如標(biāo)記① ;選擇“配置顯示”,如標(biāo)記② ,將屬性Structure Description 2<1007>(結(jié)構(gòu)描述2)添加到對話框中。


對于高層代號,這一列的值應(yīng)該填寫等號(=);對于位置代號,這一列的值應(yīng)該填寫(+);對于文檔類型,這一列應(yīng)該填寫(&)……填寫完成后,更新報表,想要的結(jié)果就出來了。

對話框

這種方法非常簡單,但是有個缺點(diǎn)。比如從別的項(xiàng)目復(fù)制了圖紙過來,或手工新增了新的結(jié)構(gòu)標(biāo)識符,要始終記得修改這里的Structure Description 2<1007>(結(jié)構(gòu)描述2),否則報表會有些地方是空缺的。


方法二:使用正則表達(dá)式

正則表達(dá)式的思路比較簡單,找到一個屬性,比如Structure identifier <20000> / Complete structure identifier with preceding sign <1003>(結(jié)構(gòu)標(biāo)識符/帶前綴的完整結(jié)構(gòu)標(biāo)識符),把不需要的部分去除,只保留前綴即可。

結(jié)構(gòu)標(biāo)識符/帶前綴的完整結(jié)構(gòu)標(biāo)識符

打開表格,插入占位符文本,彈出對話框中選擇① 格式屬性/計(jì)算屬性,然后選擇所需要的屬性③ Structure identifier <20000> / Complete structure identifier with preceding sign <1003>(結(jié)構(gòu)標(biāo)識符/帶前綴的完整結(jié)構(gòu)標(biāo)識符),別忘記激活④ 替代文本,我使用的是“表格10”。

彈出對話框

在項(xiàng)目屬性中,找到“塊屬性:替代文本[10]”,把值
○│??_??@+=&#+$;│ 粘貼進(jìn)去,更新報表即可得到想要的結(jié)果。



相較于編程語言或增強(qiáng)文本編輯器,EPLAN的正則表達(dá)式有點(diǎn)半吊子。那么多好的正則引擎,偏偏它使用了一個很不咋地的ECMAScript。這個引擎支持的語法太少了,不夠強(qiáng)大。比如環(huán)視(LookAround)是很重要的語法,但EPLAN只支持肯定前視(Positive Lookahead)和否點(diǎn)前視(Negative Lookahead),不支持回顧。


本來按筆者最初想法,可以使用肯定回顧(Positive Lookback)語法(?<=[+=&#]).+$輕松解決,但是不成功,確認(rèn)半天是語法不支持。這個語法的意思是把[+=&#]后面的內(nèi)容去掉。最后不得不使用了一個排除表達(dá)式[^+=&#]+$,這個表達(dá)式有缺陷,如果遇到+A1+LOC1這種多層結(jié)構(gòu)時會有問題,需要重新設(shè)計(jì)語法,好在這個客戶暫時沒有多層結(jié)構(gòu)。


期望EPLAN增強(qiáng)正則表達(dá)式功能,十年來筆者一直不曾放棄,它可以使得EPLAN更靈活和強(qiáng)大。成功,源自于不放棄!

共有訪客發(fā)表了評論 網(wǎng)友評論

  客戶姓名:
郵箱或QQ:
驗(yàn)證碼: 看不清楚?