3

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

例如:

[   string   ] 

必须替换为:

anotherstring

(“和字符串之间可能有更多或更少或没有空格)。而且替换必须不区分大小写。实际上我正在使用该表达式:

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

但这仅在括号和字符串之间没有空格的情况下才有效。我如何构建一个表达式来考虑空格?

4

3 回答 3

4

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

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

如果您只想允许空格使用:

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

请注意,您没有在正则表达式中转义[and ][]是分别标记字符类的开始和结束的正则表达式元字符。

所以 a[(?i)string]匹配单个字符,它是(, ?, i, ), s, t, r, i,ng

为了从字面上匹配它们,需要通过\\在它们前面放置一个来进行转义。

于 2012-07-31T13:02:45.837 回答
3

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

于 2012-07-31T13:01:33.997 回答
2

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

这是您的案例的代码:

String myString="[      String      ]";
String result = myString.replaceAll("\\[ *(?i)string *\\]", "anotherstring"); 
于 2012-07-31T13:20:13.180 回答