Java:根据正则表达式的值更改 var 的值(字符串)

标签 java regex string

我想知道是否有可能(如果可能的话,我该如何实现它)使用一个正则表达式来操作字符串值(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/

相关文章:

Python - 如何用 'p' (4p5->4.5) 替换数字 (4p5) 中的 '.'?

swift - 如何在 Swift 中将字节转换为字符串?

java - 如何在 Android 的 ExpandableListView 中为不同的父列表添加不同的子列表?

python - 如何在 Python 中创建包含常规变量和一些固定文本的正则表达式?

java - 等待并通知

Java 正则表达式 - 为什么匹配器发现额外的字符?

c - 指向字符串的指针

c++ - 如果我不将预写的字符串保存到变量中,它是否还在内存中?

java - 使大括号自动从新行开始

java - 用于配置映射的 Kubernetes API