2017-03-26 44 views
0

我有幾個表,我試圖更新。當第一個元素匹配某個字符串時,我需要更新每個表的第四個元素。搜索每一行包含'X',然後替換第四個元素正則表達式

實施例表(在Lua):

TABLE = { 

{TEXT1,0,4,0,0,0,0}, 
{TEXT2,0,4,0,0,0,0}, 
{TEXT3,0,5,0,0,0,0}, 
{TEXT1,0,5,0,0,0,0}, 
{TEXT1,0,4,0,0,0,0}, 
{TEXT4,0,5,0,0,0,0} 

} 

我可以使用以下方法來僅選擇具有元素「TEXT1」表:

(?=TEXT1) 

我還可以使用下面的語句來選擇第四個和第五個逗號之間的內容:

^[^,]*,[^,]*,[^,]*,[^,]*,\K(.*?)(?=,\d) 

我想不出如何用u儘管這兩個表達式一次。

所以基本上,我想在每個以字符串「TEXT1」開頭的表中替換0,但是如何組合我的語句來檢查所需的文本,然後只選擇表中的第四個元素?

回答

2

您可以使用^\{TEXT1,([^,]+,){3}\K[^,]+選擇您之後的元素,然後將其替換爲您喜歡的任何元素。通過999更換會變成你的表到

TABLE = { 

{TEXT1,0,4,0,999,0,0}, 
{TEXT2,0,4,0,0,0,0}, 
{TEXT3,0,5,0,0,0,0}, 
{TEXT1,0,5,0,999,0,0}, 
{TEXT1,0,4,0,999,0,0}, 
{TEXT4,0,5,0,0,0,0} 

} 

注意,在您的標題問第四個元素,但是你的正則表達式選擇betweeen第四和第五逗號元素 - 這是第五元素,在這裏使用。另請注意,如果表格在任何地方可能包含少於六個元素,則可能需要用[^,\n\r]替換[^,]

+0

非常好的答案(+1) - 雖然記事本++支持'\ K'嗎? – Jan

+0

@Jan是的,它的確如此。 –

相關問題