当前位置: 代码迷 >> Java Web开发 >> 帮助看上,这个java正则表达式哪里写错了
  详细解决方案

帮助看上,这个java正则表达式哪里写错了

热度:8906   发布时间:2013-02-25 21:06:39.0
大虾帮助看下,这个java正则表达式哪里写错了?
先看代码:

public static void main(String[] args){
String str = "ab<style type=\"text/css\" > .?[]cd*{ss}\r\n body {ef}gh{} body , table{ij} kl</style>mn";
String reg = "<style[\\s][\\s\\S]*?>[\\s\\S]*?([\\s][b][o][d][y][\\s\\S]*?\\{[\\s\\S]*?\\})|([b][o][d][y][\\s]*?,)[\\s\\S]*?<\\/[s][t][y][l][e]>";
System.out.println("替换结果:"+str.replaceAll(reg, ""));//值为:abgh{} mn,不是我想要的
}

先简单说明下:
我想实现的功能是找出字符串中位于<style>标签类的body{...}与body, 并把这两个用空串代替。
实例代码中,我想要的替换结果是:

"ab<style type=\"text/css\" > .?[]cd*{ss}\r\n gh{}  table{ij} kl</style>mn"
即把:
"ab<style type=\"text/css\" > .?[]cd*{ss}\r\n body {ef}gh body , table{ij} kl</style>mn";
红色部分替掉。
为避免复杂起见,约定str字符只有一对<style>标签,body前后只允许为空格或,{ 即取body后逗号为止和取body后第一对{}为止,用""代替换
上文应该说得比较清楚了,本人正则运用不熟,请大虾指教,谢了

String str = "ab<style type=\"text/css\" > .?[]cd*{ss}\r\n body {ef}gh{} body , table{ij} kl</style>mn";
String regex = "body \\{ef\\}gh\\{\\} body";
str = str.replaceAll(regex, "gh{}");
System.out.println(str);





偷懒的不知道行不行呀。。
呵呵。。。我在继续想。。。等会还会恢复。\\{ef\\}";





这个貌似也行。。。

String regex = "body
  相关解决方案