如何用单个子字符串替换不同的可能子字符串(甚至可能具有不同的长度)?
How to replace different possible substrings (maybe even of different lengths) with a single substring?
假设我有一个巨大的字符串,格式如下 -
"blahblahblahrgb(123, 214, 255)blahblahrgb(99, 0, 235)aefubaeofbiuaebfaef"
我想用“rgb(255,255,255)”替换“rgb(x,x,x)”的每个实例,字符串中的其余字符保持不变。我不能使用默认的字符串替换方法,因为 rgb() 中的值可能会有所不同。
所以上面的字符串应该变成-
"blahblahblahrgb(255, 255, 255)blahblahrgb(255, 255, 255)aefubaeofbiuaebfaef"
是否有默认函数可以做到这一点?或者您可以建议任何有效的逻辑?
Python、Java脚本、Java、Dart 或任何语言都可以。
这是 Java
中的快速正则表达式解决方案
public String replaceAllRGBToWhite(String str) {
return str.replaceAll("rgb\(\d{1,3}, \d{1,3}, \d{1,3}\)", "rgb(255, 255, 255)");
}
您的问题是 Regular Expressions 的完美用例。
由于您要求使用多种语言,这里是 python 正则表达式版本。
import re
rex = re.compile("rgb\(\d{1,3}, \d{1,3}, \d{1,3}\)")
myString = "blahblahblahrgb(123, 214, 255)blahblahrgb(99, 0, 235)aefubaeofbiuaebfaef"
newString = rex.sub("rgb(255, 255, 255)", mystring)
print(myString)
>>> blahblahblahrgb(123, 214, 255)blahblahrgb(99, 0, 235)aefubaeofbiuaebfaef
print(newString)
>>> blahblahblahrgb(255, 255, 255)blahblahrgb(255, 255, 255)aefubaeofbiuaebfaef
有关正则表达式的逐步说明,请参阅 Regex101。
假设我有一个巨大的字符串,格式如下 -
"blahblahblahrgb(123, 214, 255)blahblahrgb(99, 0, 235)aefubaeofbiuaebfaef"
我想用“rgb(255,255,255)”替换“rgb(x,x,x)”的每个实例,字符串中的其余字符保持不变。我不能使用默认的字符串替换方法,因为 rgb() 中的值可能会有所不同。
所以上面的字符串应该变成-
"blahblahblahrgb(255, 255, 255)blahblahrgb(255, 255, 255)aefubaeofbiuaebfaef"
是否有默认函数可以做到这一点?或者您可以建议任何有效的逻辑?
Python、Java脚本、Java、Dart 或任何语言都可以。
这是 Java
中的快速正则表达式解决方案public String replaceAllRGBToWhite(String str) {
return str.replaceAll("rgb\(\d{1,3}, \d{1,3}, \d{1,3}\)", "rgb(255, 255, 255)");
}
您的问题是 Regular Expressions 的完美用例。 由于您要求使用多种语言,这里是 python 正则表达式版本。
import re
rex = re.compile("rgb\(\d{1,3}, \d{1,3}, \d{1,3}\)")
myString = "blahblahblahrgb(123, 214, 255)blahblahrgb(99, 0, 235)aefubaeofbiuaebfaef"
newString = rex.sub("rgb(255, 255, 255)", mystring)
print(myString)
>>> blahblahblahrgb(123, 214, 255)blahblahrgb(99, 0, 235)aefubaeofbiuaebfaef
print(newString)
>>> blahblahblahrgb(255, 255, 255)blahblahrgb(255, 255, 255)aefubaeofbiuaebfaef
有关正则表达式的逐步说明,请参阅 Regex101。