用replaceAll替换具有可变数量空格的字符串

时间:2012-07-31 12:59:47

标签: java regex string

我需要替换一个字符串,该字符串的内容(在固定位置)可能有一个或多个空格与另一个字符串。

例如:

[   string   ] 

必须替换为:

anotherstring

(“和”字符串之间可能有更多或更少或没有空格。而且替换必须是不恰当的。实际上我正在使用该表达式:

myString.replaceAll("[(?i)string]", "anotherstring"); 

但这仅在括号和字符串之间没有空格时才有效。 我如何构建表达式以考虑空格?

3 个答案:

答案 0 :(得分:4)

如果您想允许任何空格使用:

myString.replaceAll("\\[\\s*(?i)string\\s*\\]", "anotherstring"); 

如果您只想使用空格:

myString.replaceAll("\\[ *(?i)string *\\]", "anotherstring"); 

请注意,您尚未在正则表达式中转义[][]是正则表达式元字符,分别标记字符类的开头和结尾。

所以[(?i)string]匹配(?i)s,{{}之一的单个字符1}},trin

要按字面意思匹配它们,需要在它们之前放置一个g进行转义。

答案 1 :(得分:3)

该表达式不起作用,它只有一个字符类,并且匹配单个字符。您需要"(?i)\\[\\s*string\\s*\\]"

答案 2 :(得分:2)

您还需要包含正则表达式以匹配空格,即一个空格后跟一个*,它匹配任意数量的空格实例,包括没有空格。如果您至少需要一个空格,则可以用+号替换它们。

以下是您案例的代码:

String myString="[      String      ]";
String result = myString.replaceAll("\\[ *(?i)string *\\]", "anotherstring");