给出以下字符串:
String s = "sschk@@123456sschk@@123456gme@@100&200&300&1,2,3,4,5$6,7,8,9,0sschk@@123456";
我应用模式,sschk@@\\d+?
或sschk@@.+?
想要获取所有sschk@@123456
并用空字符串替换它们。请注意sschk@@
之后的数字可能会在每次获得后都有所不同,例如sschk@@321321
。
但我只有
[sschk@@1, sschk@@1, sschk@@1]
我应该采用什么模式来准确获取每个sschk@@123456
,以便我可以在以后查找和替换。
非常感谢。
答案 0 :(得分:3)
正则表达式的问题在于您使用过“?”在正则表达式中切换“+”的贪婪的标记,所以你的正则表达式“sschk @@ \ d +?”表示“字符串sschk @@后跟一个或多个数字,但匹配尽可能少的数字”。删除“?”意思是“字符串sschk @@后跟1个或更多数字(尽可能匹配数字)”
您的正则表达式语句可能看起来像这样:sschk@@\\d{6}
它将匹配字符串“sschk @@”,后跟正好6位数字。如果要匹配字符串“sschk @@”,后跟可变长度的数字,但不超过6,则可以使用sschk@@\\d{1,6}
。如果您需要匹配字符串“sschk @@”后的任意位数,请使用sschk@@\\d+
答案 1 :(得分:0)
我想我已经完成了。 只需应用这样的模式
(sschk@@\\d+)