我正在使用這個免費的RegExp Designer它找到並替換。如何搜索所有數字並添加千位分隔符?如何在reg ex中添加千分隔符?
Input: <node num='12345678'>
Output: <node num='12,345,678'>
我正在使用這個免費的RegExp Designer它找到並替換。如何搜索所有數字並添加千位分隔符?如何在reg ex中添加千分隔符?
Input: <node num='12345678'>
Output: <node num='12,345,678'>
要僅在「民」的屬性值,你可以這樣做重新編號:
(?<=num='\d+)(?=(?:\d{3})+(?!\d))
但請注意,這隻會在.NET正則表達式的工作,這是正則表達式設計器使用。大多數正則表達式只允許lookbehinds匹配固定數量的字符。 Java的正則表達式允許可變長度的lookbehinds只要有一個明顯的最大長度,這樣你就可以僞造它通過使用{min,max}
量詞的最大任意數量:
(?<=num='\d{1,20})(?=(?:\d{3})+(?!\d))
約翰·海蘭的正則表達式將在任何味道的工作支持lookbehinds。
編輯:我差點忘了;這裏是你如何做到這一點沒有向後看:
(num='\d{1,3}|\G\d{3})(?=(?:\d{3})+(?!\d))
我喜歡這個最好純粹的美學原因。 :)
EDIT2:我忘了提,最後一個替換字符串是"$1,"
s/(?<=\d)(?=(\d\d\d)+(?!\d))/,/g
這就是說,如果你用這個數據在某些時候不是字符串任何東西,任何一種語言,你的工作中可能有格式化的數字輸出設備的工作。
我應該用我的文字表達這種匹配?它在我前面提到的RegExp Designer應用程序中不起作用。你可以下載它並在其中播放,看它是否確實找到和替換? – 2009-08-04 16:21:08
@Jeremy,您是否嘗試在正則表達式字段中放置`(?=(\ d \ d \ d)+(?!\ d))`,並且在替換表達式字段中放置了`,` ? – 2009-08-04 16:27:17