所以我遇到了一个问题,我需要在字符串中检查简单的开始和结束HTML标签。对于开始标签,我没有遇到任何问题,但是当我尝试找到结束标签时,我遇到了一些问题。
在上面的代码中,我找到了第一个标签,然后继续寻找结束标签。我知道这个设置可能会有一些未来的问题,这还在进行中。然而,检查结束标签的部分不起作用。就我所看到的逻辑来说,应该是正确的。我将标签传入第二个模式中,并使用第二个匹配器来检查是否匹配。 我的文本字符串是"
private Pattern pattern;
private Matcher matcher;
private Pattern endPattern;
private Matcher endMatcher;
private static final String HTML_TAG_PATTERN = "<([a-zA-Z]+)>";
public boolean hasCorrectHTML(String checking)
{
boolean ret=true;
pattern=Pattern.compile(HTML_TAG_PATTERN);
matcher=pattern.matcher(checking);
while(matcher.find() && ret)
{
String htmlEndTag="</"+matcher.group(1)+">";
endPattern=Pattern.compile(htmlEndTag);
endMatcher=endPattern.matcher(checking.substring(matcher.end()));
ret=endMatcher.matches();
}
return ret;
}
在上面的代码中,我找到了第一个标签,然后继续寻找结束标签。我知道这个设置可能会有一些未来的问题,这还在进行中。然而,检查结束标签的部分不起作用。就我所看到的逻辑来说,应该是正确的。我将标签传入第二个模式中,并使用第二个匹配器来检查是否匹配。 我的文本字符串是"
<b>this test</b>
"。它可以很好地检测到<b>
,但当我检查</b>
是否匹配时,它总是返回false。我已经向同事们询问过为什么会发生这种情况,但他们也无法解释。我不知道为什么会发生这种情况,有什么想法吗?我在这里漏掉了什么?