Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 在字符串中从右到左每隔n个字符插入一个字符?_Regex - Fatal编程技术网

Regex 在字符串中从右到左每隔n个字符插入一个字符?

Regex 在字符串中从右到左每隔n个字符插入一个字符?,regex,Regex,是否有一个简单的正则表达式可以在字符串中从右向左每隔n个字符(例如2)插入一个字符,例如冒号: 例如 059->0:59 14598->1:45:98 34001->34:00:01如果您的环境支持,您可以使用先行检查来检查前面任意两个字符中的一个或多个,直到字符之间的任何位置的$行尾(使用\B非触发仅在单词字符之间的先行检查),并用冒号替换 \B(?=(?:..)+$) 只需使用“2*N个任意字符”的前瞻: s/(?=(?:.{2})+$)/:/g 请显示您尝试的正则表达式模式并指定正则表

是否有一个简单的正则表达式可以在字符串中从右向左每隔n个字符(例如2)插入一个字符,例如冒号:

例如

059->0:59

14598->1:45:98


34001->34:00:01

如果您的环境支持,您可以使用先行检查来检查前面任意两个字符中的一个或多个,直到字符之间的任何位置的
$
行尾(使用
\B
非触发仅在单词字符之间的先行检查),并用冒号替换

\B(?=(?:..)+$)

只需使用“2*N个任意字符”的前瞻:

s/(?=(?:.{2})+$)/:/g

请显示您尝试的正则表达式模式并指定正则表达式的风格。对于这种特殊情况,您可以使用一个
替换每个匹配项。对不起,我应该更具体一些,我使用的是Java中的String.replaceAll()方法。我该如何将这个正则表达式与这个方法一起使用?@SpamSpam我的意思是,如果它只是其中一个数字,String str=new String(“059”)->str=str.replaceAll(…)@SpamSpam是的,您可以对每个测试用例使用它。是的,这很有效。非常感谢。接受答案。