大家可以运行下面这段测试代码看看,是不是会抛出java.lang.StackOverflowError异常,如果把str长度缩减一些倒是可以正常运行,如果在你的上没有抛出异常,请再增加str的长度试试测试代码:
====================================import java.util.regex.Matcher;
import java.util.regex.Pattern;public class ProgramTest {
public static void main(String[] args) throws Exception {
String str = "bbbbbbbb";
String re = "\\
====================================import java.util.regex.Matcher;
import java.util.regex.Pattern;public class ProgramTest {
public static void main(String[] args) throws Exception {
String str = "bbbbbbbb";
String re = "\\
=========================
java.lang.StackOverflowError
at java.util.regex.Pattern$CharProperty.match(Pattern.java:3313)
at java.util.regex.Pattern$Branch.match(Pattern.java:3998)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4052)
at java.util.regex.Pattern$Loop.match(Pattern.java:4179)
at java.util.regex.Pattern$GroupTail.match(Pattern.java:4111)
at java.util.regex.Pattern$BranchConn.match(Pattern.java:3962)
at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3335)
at java.util.regex.Pattern$Branch.match(Pattern.java:3998)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4052)
at java.util.regex.Pattern$Loop.match(Pattern.java:4179)
at java.util.regex.Pattern$GroupTail.match(Pattern.java:4111)
at java.util.regex.Pattern$BranchConn.match(Pattern.java:3962)
at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3335)
at java.util.regex.Pattern$Branch.match(Pattern.java:3998)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4052)
at java.util.regex.Pattern$Loop.match(Pattern.java:4179)
at java.util.regex.Pattern$GroupTail.match(Pattern.java:4111)
at java.util.regex.Pattern$BranchConn.match(Pattern.java:3962)
at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3335)
at java.util.regex.Pattern$Branch.match(Pattern.java:3998)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4052)
at java.util.regex.Pattern$Loop.match(Pattern.java:4179)
at java.util.regex.Pattern$GroupTail.match(Pattern.java:4111)
at java.util.regex.Pattern$BranchConn.match(Pattern.java:3962)
at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3335)
at java.util.regex.Pattern$Branch.match(Pattern.java:3998)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4052)
at java.util.regex.Pattern$Loop.match(Pattern.java:4179)
.............
substring细节可以自己考虑~~
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) throws Exception {
int maxLen = 820;
String str = "bbbbbbbb";
String re = "\\
String str = " bbbbbbbb";
int start = -1;
int end = -1;
Pattern pattern = Pattern.compile("\\");
if(start > -1 && end > -1) {
str = str.replace(str.substring(start, end), "");
}
System.out.println(str);
}
不是没有去思考,而是这种方法对于圈套的quote处理起来比较麻烦TO sureyor()
这样会把拆开了,我得再想想正则表达式该怎么写了,感觉变得复杂了很多
其实我更想知道的是为什么会抛出这样的异常?本来以为用正则效率会更高才对,可就这么短的字符串就应付不了
start = matcher.start();
}
end = str.lastIndexOf("") + "/
int end = -1;
start = str.indexOf("[quote=");
end = str.lastIndexOf("") + "/
String str = " bbbbbbbb";
String re = "\\ bbbbbbbb----------------------------------------------------------不是string太长了,是你的模式没写对~
我写过的string要比这个长多了,
用这个匹配都没问题的~