给出字符串
Content ID [9283745997] Content ID [9283005997] There can be text in between Content ID [9283745953] Content ID [9283741197] Content ID [928374500] There can be valid text here which should not be removed.
我想删除Content ID
后跟[9283745997]
的文字,方括号之间可以有任何数字。最终我希望结果字符串是
There can be text in between There can be valid text here which should not be removed.
有人可以提供有效的正则表达式来捕获这个重复的文本,但方括号内的数字是唯一的吗?
感谢您的帮助!
我对此的反应是:
Pattern p = Pattern.compile("(Content ID \\[\\d*\\] )");
Matcher m = p.matcher(str);
StringBuffer sb = new StringBuffer();
while(m.find()) {
m.appendReplacement(sb, "");
}
m.appendTail(sb);
System.out.println(sb);
答案 0 :(得分:2)
所以基本上你要删除Content ID [one or more digits]
中的每一个
为此,您可以使用String类的replaceAll("regex","replacement")
方法。作为替换,您可以使用空字符串""
只留下的问题是你应该使用正则表达式。
Content ID
只需将其正常写为"Content ID "
[
或]
,您必须在每个之前添加\
,因为它们是正则表达式元字符,您需要转义它们(在Java中,您需要编写{ {1}}为\
)"\\"
的字符)正则表达式使用0-9
(再次在Java中,您需要将\d
写为\
,这将导致"\\"
1}})"\\d"
。例如,如果您想匹配一个或多个字母+
,可以将其写为a
。现在你应该能够创建正确的正则表达式了。如果您有任何问题,请随时在评论中提问。
答案 1 :(得分:0)
我会使用正则表达式
Content ID \[\d+\] ?
像这样实施:
str.replaceAll("Content ID \\[\\d+\\] ?", "");
您可以在此处找到解释和演示:http://regex101.com/r/qD5rJ6
答案 2 :(得分:0)