我需要用另一个字符串替换其内容(在固定位置)可能有一个或多个空格的字符串。
例如:
[ string ]
必须替换为:
anotherstring
(“和字符串之间可能有更多或更少或没有空格)。而且替换必须不区分大小写。实际上我正在使用该表达式:
myString.replaceAll("[(?i)string]", "anotherstring");
但这仅在括号和字符串之间没有空格的情况下才有效。我如何构建一个表达式来考虑空格?
如果您想允许使用任何空格:
myString.replaceAll("\\[\\s*(?i)string\\s*\\]", "anotherstring");
如果您只想允许空格使用:
myString.replaceAll("\\[ *(?i)string *\\]", "anotherstring");
请注意,您没有在正则表达式中转义[
and ]
。[
和]
是分别标记字符类的开始和结束的正则表达式元字符。
所以 a[(?i)string]
匹配单个字符,它是(
, ?
, i
, )
, s
, t
, r
, i
,n
或g
为了从字面上匹配它们,需要通过\\
在它们前面放置一个来进行转义。
该表达式不起作用,它只有一个字符类并且将匹配单个字符。你需要"(?i)\\[\\s*string\\s*\\]"
.
您还需要包含正则表达式以匹配空格,即一个空格后跟一个 *,它匹配任意数量的空格实例,包括不包含空格。如果您至少需要一个空格,可以用 + 号替换它们。
这是您的案例的代码:
String myString="[ String ]";
String result = myString.replaceAll("\\[ *(?i)string *\\]", "anotherstring");