試圖在Notepad++
中使用正則表達式。我想有以下發生:正則表達式捕獲組子串
姓:喬納森
替換爲:
姓:喬納
我已經試過如下:
查找聲明
姓:
替換表(*):
姓:\ 1
爲了把它變成所捕獲的基團。但現在我需要那個被捕獲的組是truncated/substring
,所以它只是第一個四個個字符。當我進行替換時,它會替換完整的字符串,但我不清楚如何獲取捕獲組的前四個字符。我試過(.*){4}
但是沒有任何回報。
謝謝!
試圖在Notepad++
中使用正則表達式。我想有以下發生:正則表達式捕獲組子串
姓:喬納森
替換爲:
姓:喬納
我已經試過如下:
查找聲明
姓:
替換表(*):
姓:\ 1
爲了把它變成所捕獲的基團。但現在我需要那個被捕獲的組是truncated/substring
,所以它只是第一個四個個字符。當我進行替換時,它會替換完整的字符串,但我不清楚如何獲取捕獲組的前四個字符。我試過(.*){4}
但是沒有任何回報。
謝謝!
這裏有很長的路要走:
(FirstName:.{1,4}).*?$
$1
我不知道有訪問只是一部分的方式匹配的組,但您可以只匹配您想要的部分。
你的新發現語句將只捕獲前4個字符,但仍符合其他:
FirstName: (.{4}).*?$
轉換爲「查找字符串‘姓:’,然後記下四個字符,然後繼續一直走到最後。「
你REPLACE語句就幾乎和以前一樣(我包括名字後有一個空格):
FirstName: \1
如果它是在該行和線的導向開始,
或唯一的行項目,這將工作。
查找:(?im)^[^\S\r\n]*(firstname:)[^\S\r\n]*([a-z]{0,4}|.{0,4}).*
替換:FirstName $1
如果它在字符串的中間,它會採取更多的努力。
必須看到一些例子,因爲必須使用僞錨。
此模式只會打擾多餘長度的處理線以截斷。
我的模式不僅會在步數/效率方面超越其他答案,而且它也不會在替換字段中引用任何參考或文本。
使用此:(Pattern Demo)
查找:FirstName: .{4}\K.+
替換:[無]
*注意,在\K
意味着 「開始從這點匹配」。 .+
將停在每行的末尾。
請注意,如果在「FirstName:」之後少於4個字符,則該正則表達式將不匹配,並且將被完全忽略,這與捕獲'(。{1,4})'相同,插入它。實際上'。*?'可以用'。+?'替換,並且在「FirstName:」之後的正好有4個字符的例子也會被忽略。但是對於大多數情況(除非不區分大小寫和其他奇怪),這些都是相同的。 – c0d3rman