2014-10-31 76 views
0

我想用以下模式替換七位或更多位數。用它的後四位替換數字

12345674567/1234567

我使用正則表達式如下匹配的數量(\d*(\d{4})),並與$2/$1

取代它是否有任何有效的方式來做到這一點?

+0

有沒有你想用正則表達式,而不是與你的任何代碼庫做一個特別的原因使用像java或c + +?正則表達式很適合查找事物,但我不一定會用它來替換和添加字符串。它只是變得混亂。 – 2014-10-31 20:42:32

+0

你在用什麼語言? – 2014-10-31 20:44:08

+0

我正在使用C#,但我有一個來自數據庫的字符串中的很多數字。我認爲用正則表達式替換它很容易。 – ogun 2014-10-31 20:49:22

回答

2

更有效的方法是(\d+(\d{4})),因爲當你少於5位數字時,你不需要做任何事情。更準確地說,你可以使用範圍內的字符類,因爲你只使用ascii數字:([0-9]+([0-9]{4}))\d的確可以包含各種數字,如٢,如果\d被看作unicode含義)

我沒有看到更好的模式結構。但如果你有幾個數字(不到九),使用非貪婪的量詞可能會更好:

([0-9]+?([0-9]{4})) 
+0

謝謝,但我很好奇有沒有辦法用替換模式來做到這一點。例如。如果我只用\ d +獲得數字,我可以用這樣的數字來轉換數字:$ 1 {4}/$ 1 – ogun 2014-10-31 20:54:25

+0

@ogun:不存在這種類型的東西。替換字符串的可能性僅限於反向引用。如果您使用的語言允許回調函數作爲替換,您將以更復雜的方式完成。 – 2014-10-31 20:58:20

+0

謝謝,我希望它存在... – ogun 2014-10-31 21:01:10