我需要将每个'\\w(space)\\w'替换为'\\w\\w' (无空格)。

Pattern.compile("\\w \\w").matcher("a b c d e f ...").replaceAll("$0")

我可以在替换前在“ $ 0”组(删除空格)中更改结果吗?

我需要返回“ ab cd ef”

更复杂的示例:

123 321 321 ... 123 number - > 123321321...123 number

通过正则表达式(\\d{3} )+(number)

#1楼 票数:1

如果要对匹配结果执行某些操作,则必须为此使用一个额外的StringBufferMatcher.appendReplacement()方法。

但是,您也可以不这样做而实现:

String result = "a b c d e f".replaceAll("(\\w) (\\w)", "$1$2");

#2楼 票数:1 已采纳

在这种简单情况下,每个匹配项都将有一个空格,因此删除空格将意味着用空字符串替换。 而且, String可以直接执行此操作,如下所示:

String res = "a b c d e f ...".replaceAll("\\w \\w", "");

一个更有趣的情况是,当您需要在替换时处理每个匹配项。 在这种情况下,您应该使用appendReplacementappendTail方法,它们可以协同工作:

Pattern p = Pattern.compile("\\w \\w");
Matcher m = p.matcher("a b c d e f ...");
StringBuffer sb = new StringBuffer();
while (m.find()) {
    m.appendReplacement(sb, "#");
}
m.appendTail(sb);
String result = sb.toString();

  ask by wtrclr translate from so

未解决问题?本站智能推荐:

1回复

ReplaceAllRegex:替换前更新组

我正在使用正则表达式提取组中的一些值并将这些值放入我的新字符串的另一部分,但我需要在 replaceAll 执行之前对捕获的组进行另一次更改,我有以下代码: 当值很简单(其中没有“-”)时,这可以将数据键(Group1 / $1) 值提取到 span 标记中,但是当数据键是 1f1e8-1f1e6
1回复

用数据和匹配的组内容替换文本

我不相信在搜索(相信我,我花了很多时间搜索它)寻找解决方案的时候看到了这一点,因此请继续。 目标:将正则表达式匹配到字符串中,并用包含匹配值的内容替换。 正则表达式当前使用: 根据记录,如果不是最佳方法,我会吸纳正则表达式。 如果存在多个匹配项,我当前的代码(以及我尝试的其他几种
3回复

JavaRegex多模式组替换

说我有以下字符串 我想做一个模式: (old2).*(old4) 因此,单词2将在$1而单词4将在$2 。 有没有可以同时替换两个单词字符串的函数或方法? 仅使用组变量( $1和$2 )? 所以我可以指定$1将成为new2而$2将成为new4 。 我不想找到字符串old2和o
1回复

如何替换命名组的值

我有正则表达式 我需要替换命名的组,如下所示: 问题实际上在评论中。 Java正则表达式中是否有某些东西可以让我们替换命名组的值? 我的意思是要获得一个带有替换值的新String。 例如:
3回复

替换所有出现的组

我想替换字符串中所有出现的组。 我试图获得的结果是###,##.##0.000000000基本上,我想替换所有尾随.0 #符号。 我发现这是关于动态替换的,但我不能真正使它工作。 最佳解决方案不会考虑要替换的哈希数量(如果这样可以清除任何混淆)。
2回复

Javaregexp组替换

有没有办法转换String 以下 只能使用String.replaceAll(regex, replacement)方法? 到目前为止,这是我最好的尝试: 如您所见,输出不正确。 但是,在Linux的sed命令中使用相同的regexp可以得到正确的输出:
3回复

替换所有捕获的组

我需要将类似的内容从"foo_bar_baz_2"为"fooBarBaz2" 我正在尝试使用以下模式: 是否可以使用matcher将捕获的第一个组(“ _”后的字母)替换为大写的捕获组?
4回复

替换捕获组

如果我有一个带有捕获组的正则表达式,例如foo(_+f) 。 如果我将其与字符串匹配,并希望用baz替换所有匹配中的第一个捕获组,以便这样做 转换为: 使用标准库似乎没有任何简单的方法。 如果我使用Matcher.replaceAll(),这将替换整个模式的所有匹配并将字符串转换为