字符串: [img border=0]/scm/images/bbcode/sets/misc/bullet_go.png[/img]
我想要的结果 :[img border=0]images/bbcode/sets/misc/bullet_go.png[/img]
,不带/scm/
文本。
问题: 文本scm
不是静态的,可以是数据中的任何其他文本。
我想要的是 :查看此字符串
[img border=0]/scm/images/bbcode/sets/misc/bullet_go.png[/img]
正则表达式可以获取]
和images/bbcode/
之间的文本,因此正则表达式将检测到\scm\
文本,然后可以从字符串数据中删除此\scm\
,最终结果看起来像
[img border=0]images/bbcode/sets/misc/bullet_go.png[/img]
PS:我正在Java
中实现此逻辑。
谢谢。如果不清楚,请询问并评论and
答案 0 :(得分:2)
您也无需使用正则表达式就可以实现目标。
由于您说其他部分是静态的,请尝试以下操作:
String myStr = "[img border=0]/scm/images/bbcode/sets/misc/bullet_go.png[/img]";
myStr = "[img border=0]" + myStr.substring(myStr.indexOf("images"));
System.out.println(myStr);
,输出将是:
[img border=0]images/bbcode/sets/misc/bullet_go.png[/img]
答案 1 :(得分:1)
如果[img border=0]
是动态的,则可以使用/scm/
以外的所有内容
String input = "[img border=0]/scm/images/bbcode/sets/misc/bullet_go.png[/img]";
Pattern p = Pattern.compile("(^.*\\])\\/.*?\\/(.*$)");
Matcher m = p.matcher(input);
if (m.find()) {
String output = m.replaceFirst("$1$2");
System.out.println(output);
}
// -> [img border=0]images/bbcode/sets/misc/bullet_go.png[/img]
答案 2 :(得分:1)
我捕获了']和/ images ..'之间的文本,并将此文本替换为“”。检查以下演示:
String s = "[img border=0]/scm/images/bbcode/sets/misc/bullet_go.png[/img]";
s = s.replaceAll("(?<=])/[^/]+/","");
System.out.println(s);
答案 3 :(得分:0)
我找到了解决该问题的另一种方法
String pattereString = "].*/images";
String maineString = "[img border=0]/scm/images/bbcode/sets/misc/bullet_go.png[/img]";
maineString = maineString.replaceAll(pattereString, "images");
System.out.println(maineString);
输出:
[img border=0]images/bbcode/sets/misc/bullet_go.png[/img]