我需要替换一个字符串,该字符串的内容(在固定位置)可能有一个或多个空格与另一个字符串。
例如:
[ string ]
必须替换为:
anotherstring
(“和”字符串之间可能有更多或更少或没有空格。而且替换必须是不恰当的。实际上我正在使用该表达式:
myString.replaceAll("[(?i)string]", "anotherstring");
但这仅在括号和字符串之间没有空格时才有效。 我如何构建表达式以考虑空格?
答案 0 :(得分:4)
如果您想允许任何空格使用:
myString.replaceAll("\\[\\s*(?i)string\\s*\\]", "anotherstring");
如果您只想使用空格:
myString.replaceAll("\\[ *(?i)string *\\]", "anotherstring");
请注意,您尚未在正则表达式中转义[
和]
。 [
和]
是正则表达式元字符,分别标记字符类的开头和结尾。
所以[(?i)string]
匹配(
,?
,i
,)
,s
,{{}之一的单个字符1}},t
,r
,i
或n
要按字面意思匹配它们,需要在它们之前放置一个g
进行转义。
答案 1 :(得分:3)
该表达式不起作用,它只有一个字符类,并且匹配单个字符。您需要"(?i)\\[\\s*string\\s*\\]"
。
答案 2 :(得分:2)
您还需要包含正则表达式以匹配空格,即一个空格后跟一个*,它匹配任意数量的空格实例,包括没有空格。如果您至少需要一个空格,则可以用+号替换它们。
以下是您案例的代码:
String myString="[ String ]";
String result = myString.replaceAll("\\[ *(?i)string *\\]", "anotherstring");