我想知道是否有可能(如果可能的话,我该如何实现它)使用一个正则表达式来操作字符串值(Java)。
例如:
String content = "111122223333";
String regex = "?";
预期结果:"1111 2222 3333 ##";
最佳答案
仅使用一个正则表达式,我认为这是不可能的。但你可以:
- 首先,替换
(?<=(.))(?!\1)
有一个空格; - 然后,使用字符串追加来追加“##”。
即:
Pattern p = Pattern.compile("(?<=(.))(?!\\1)");
String ret = p.matcher(input).replaceAll(" ") + " ##";
如果您的意思是分离所有组,则删除第二个操作。
说明:(?<=...)
是正向回顾,并且 (?!...)
消极的前瞻。在这里,您告诉您要找到一个位置,该位置后面有一个角色,该角色已被捕获,并且同一角色不应跟随在该位置。如果是这样,请替换为空格。 Lookaheads 和 Lookbehinds 是 anchor ,与所有 anchor (包括 ^
、 $
、 \A
等)一样,它们不消耗字符,这就是它起作用的原因。
关于Java:根据正则表达式的值更改 var 的值(字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8563418/