代码:
static short state = 0;
static int td_number = 0;
public static void main(String[] args) {
final Pattern p = Pattern.compile("^[\\s]*?\\d+\\.\\d+[\\s]*?");
final short TD_ENTRY = 0;
final short NO_ENTRY = 1;
HTMLEditorKit.ParserCallback callback = new HTMLEditorKit.ParserCallback() {
public void handleText(char[] data, int pos) {
switch (state) {
case NO_ENTRY:
break;
case TD_ENTRY: {
// We are in the right table column
// Create string from char array
String s = new String(data);
Matcher m = p.matcher(s);
boolean b = m.matches();
// Check if data information has correct format (0.0)
if (b) {
}
}
break;
default:
break;
}
state = NO_ENTRY;
}
public void handleStartTag(HTML.Tag tag, MutableAttributeSet set, int pos) {
if (tag == HTML.Tag.TD) {
//[...]
}
}
};
Reader reader = new StringReader(html);
try {
new ParserDelegator().parse(reader, callback, false);
} catch (IOException e) {
}
}
我正在尝试使用正则表达式解析 HTML。该程序读取td
html 表中标签的内容。表格单元格中的内容应该符合Pattern p
.
现在的主要问题是正则表达式模式与“0.1”这样的单元格内容不匹配。但是,如果我String s
在代码中使用值(“0.1”)手动定义模式匹配。
此外,如果我char[] data
在调试模式下复制 的内容并s
使用此复制的内容进行定义,则该模式也不适合,尽管它看起来与上面手动定义的值相同。
是否可以找出真正读取了哪些空白字符?
似乎空格并不总是空格,因此与正则表达式类 [\s] 不匹配。这可能吗?
编辑:
感谢您的回答。它实际上是一个空白字符 (\xA0),\s 正则表达式类无法识别。
对于所有投反对票(真的令人沮丧)的人来说,我的问题只是误解了我。也许问题真的是“我想用正则表达式解析 HTML”这句话,但实际上我只是从 HTML 表格单元格中获得了带有未知空白字符的内容 ;-)。
我想我在使用像 jsoup 这样的库时遇到了同样的问题。