2011-03-09 66 views
0

我有一個相當廣泛的autolisp文件(大概4000行),它將大的逗號分隔的項目編號列表及其描述寫入文件。這裏有一個例子(它們看起來都一樣,因爲這,保存數量和說明)搜索一行文本(作爲搜索標準)並替換該行中的某個數字字符串?

>(write-line (strcat "0203," (itoa 1-2x4x8) ", PCS 2x4x 92 5/8 STUD GRADE FIR") file) 

的「0203」,是項目編號和「2x4x 92 5/8螺柱GRADE FIR」的說明,不介意逗號或PCS(代表「塊」),它們是無關緊要的。重要的是我需要更改該項目編號以匹配新列表。這是我認爲正則表達式可能會有幫助的地方,但我無法找到答案。

基本上,我需要搜索文件的描述(如上面的例子),並用一個新的數字替換4位數字。可以定期或擴展表達式嗎? (或可能是別的東西),只是要清楚

該號碼將始終是4位數位置完全如所示,說明將只發生一次在文件中(他們是確切的),說明和相關的號碼我需要更換將始終在同一行上。

請幫助:)

+1

但是用什麼你想取代數字? – bluish 2011-03-09 10:05:36

回答

0

不確定正則表達式是否會幫助你。如果您搜索具有重複模式的行,並且可以用固定文本替換模式或使用與該行上其他模式匹配的值替換模式,則正則表達式最爲有用。

根據我對您所描述內容的理解,您正在尋找固定文本,每行不同,並且希望用與搜索文本一對一相關的數字替換行的一部分。這是一個非常不同的用例,您需要爲每個搜索文本進行迭代,並且有另一個鏈接搜索文本和新數字的表格。

在我看來,你需要爲每一個搜索文本的正則表達式,併爲舊到新號碼就像一個替代模式(在六實物命令):

s!\d+,(.*2x4x 92 5/8 STUD GRADE FIR)!1234,\2! 

這匹配一個4位數字和逗號,然後是東西和您的搜索文本。替換用「新」號,逗號和匹配的捕獲組替換整個事物。 但創建這些正則表達式線基本上是更多的工作,然後在文件中進行手動替換...