我有一个这样的字符串:
<b.*?n.*? .*?a.*?n.*? .*?e.*? .*? .*? .*? .e.*?t.*?e.*? .*? .*? .*? .*?<.r>.*? .*?e.*? .*? .*? .*?l.*?e .*?b.*?e.*?n.*?b.*? .*? .*?a.*?p.*?t.*? .*?l.*? .*? .*? .*? .*? ..b.*? .*? .*?s.*? .*?s.*? .*?>.*? .*?es.*? .*?n.*?t.*?r.*? .*? .*? .*? .n.*?b.*? .*? .*? .*? .*? .*?e.*? .*? .*? .*? .*?t.*?n.*? .*? .*? .*? .*?n.s.. .*?a. .*? <.*?e.e.*? comp.*? .*?<.*? .*?r.*?el.*?&.*?b.*? .*? .*?y.*? ..e.*? .. .*? .*? .*? .*? .*?u.t.*?m..o.*?b.*?r.*?e.*?n.*?o.. .*? .*?s. .*?e.*?o.. .*?r.*?r.*?&.*?b.*? ..b>.*?o.*?s.*? .*?r.*? .*? .*?a..i.*? .*? .*? .*?e.*?in.*? .*? .*? .*? .*? .*? .*? ..b.*? .*? .*? .*?r..i.*?c.*? .*? .*?o.*?<..>.*?
很抱歉,*
已从上面的文字中移除。
我希望能够将.*?
的连续外观替换为单个.*?
。我试过了
res = tmp.replaceAll("(\\s\\.\\*\\?)(\\1{2,})","\\s\\.\\*\\?");
但它不起作用。我的代码中有什么问题吗?
答案 0 :(得分:0)
我建议你使用循环并替换它。类似关注
String pattern= "(.\*\?\s.\*\?)";
if(YOURSTRING.matches(pattern)){
// replace two .*? to one
}
else{
// break your loop
}
这不是一个完整的解决方案。但是一些基本的想法
答案 1 :(得分:0)
你可以试试这个:
String str = "abcabcddabceeabcabc";
str = str.replaceAll("[abc]+", "abc");
System.out.println("str = " + str);
示例:强>
str = abcddabceeabc
结果:
$.post("switch-up-control.php", {
ip: ip,
id: sw_id
}, function(response){
eval(response); //i want run code here.
});
答案 2 :(得分:0)
您可以使用
(\s*)(?:\s*\.\*\?){2,}
并替换为$1.*?
。第1组反向引用$1
将在第一个.*?
之前保留初始空格。
正则表达式匹配:
(\s*)
- 第1组:零个或多个空白符号(?:\s*\.\*\?){2,}
- 两个或更多序列:
\s*
- 零个或多个空白符号\.
- 一个文字点\*
- 文字星号\?
- 文字?
符号请参阅regex demo。
示例代码:
String p = "(\\s*)(?:\\s*\\.\\*\\?){2,}";
String str = "<b.*?n.*? .*?a.*?n.*? .*?e.*? \\.*? .*? .*? .e.*?t.*?e.*? .*? .*? .*? .*?<.r>.*? .*?e.*? .*? .*? .*?l.*?e .*?b.*?e.*?n.*?b.*? .*? .*?a.*?p.*?t.*? .*?l.*? .*? .*? .*? .*? ..b.*? .*? .*?s.*? .*?s.*? .*?>.*? .*?es.*? .*?n.*?t.*?r.*? .*? .*? .*? .n.*?b.*? .*? .*? .*? .*? .*?e.*? .*? .*? .*? .*?t.*?n.*? .*? .*? .*? .*?n.s.. .*?a. .*? <.*?e.e.*? comp.*? .*?<.*? .*?r.*?el.*?&.*?b.*? .*? .*?y.*? ..e.*? .. .*? .*? .*? .*? .*?u.t.*?m..o.*?b.*?r.*?e.*?n.*?o.. .*? .*?s. .*?e.*?o.. .*?r.*?r.*?&.*?b.*? ..b>.*?o.*?s.*? .*?r.*? .*? .*?a..i.*? .*? .*? .*?e.*?in.*? .*? .*? .*? .*? .*? .*? ..b.*? .*? .*? .*?r..i.*?c.*? .*? .*?o.*?<..>.*?";
String subst = "$1.*?";
System.out.println(str.replaceAll(p, subst));
请参阅IDEONE demo