无法使用正则表达式匹配完全字符串

时间:2013-06-08 11:02:09

标签: regex

给出以下字符串:

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,以便我可以在以后查找和替换。

非常感谢。

2 个答案:

答案 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+)