1

给定下面的字符串:

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

非常感谢。

4

2 回答 2

3

您的正则表达式的问题是您使用了“?” 标记在你的正则表达式中切换“+”的贪婪,所以你的正则表达式“sschk@@\d+?” 表示“字符串 sschk@@ 后跟 1 个或多个数字,但匹配尽可能少的数字”。删除“?” 表示“字符串 sschk@@ 后跟 1 个或多个数字(匹配尽可能多的数字)”

您的正则表达式语句可能看起来像这样:sschk@@\\d{6}它会匹配字符串“sschk@@”,后跟正好 6 位数字。如果要匹配字符串 "sschk@@" 后跟可变长度的数字,但不超过 6,您可以使用sschk@@\\d{1,6}. 如果您需要匹配字符串“sschk@@”之后的任意位数,请使用sschk@@\\d+

于 2013-06-08T11:04:05.040 回答
0

我想我做到了。只需应用这样的模式

(sschk@@\\d+)
于 2013-06-08T11:13:34.400 回答