2014-10-31 75 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