无法使用 REGEX 解析 Java 中带点的字符串
Unable to parse string with a dot in Java with REGEX
将 word 文档中的内容复制并粘贴到 Vaadin7 RichTextArea(或任何其他 Richtextfield)时,有很多不需要的 HTML 标签和属性。由于在当前项目中属性宽度做了一些有趣的事情,我想用以下函数删除它们
private String cleanUpHTMLcontent(String content) {
LOG.log(Level.INFO, "Cleaning up that rubbish now");
content = content.replaceAll("width=\"[0-9]*\"",""); // this works fine
content = content.replaceAll("width:[0-9]*[\.|]*[0-9]*pt;",""); // not working
content = content.replaceAll(";width:[0-9]*[\.|]*[0-9]*pt",""); // not working
content = content.replaceAll("width:[0-9]*[\.|]*[0-9]*pt",""); // not working
return content;
}
第一行可以很好地删除旧的 html 标签,如 width="500"
,其他行进入样式属性并尝试删除具有不同位置的 width:300.45pt;
等属性结肠。
该代码在测试页上运行良好http://www.regexplanet.com/advanced/java/index.html。我在这里生成了正则表达式字符串,专门用于 java,但它仍然无法正常工作。有人知道吗?
这是一个找不到宽度的例子属性
td style="width:453.1pt;border:solid windowtext 1.0pt;
更新
content = content.replaceAll("width:\s*[.0-9]*pt;",""); // doesn't work
content = content.replaceAll(";width:\s*[.0-9]*pt",""); // doesn't work
content = content.replaceAll("width:\s*[.0-9]*pt",""); // works :-)
看来,我还必须用反斜杠转义分号?我会测试一下
要删除带点的任意数字,您可以使用否定字符 class [.\d]*
或 [.0-9]*
:
"\bwidth:\s*[.0-9]*pt;"
\b
是一个单词边界(确保我们只匹配 width
作为一个完整的单词)。
详情:
\b
- 前导词边界
width:
- 文字字符串 width:
\s*
- 0+ 个空格符号
[.0-9]*
- 0+ 个点或数字
pt;
- 文字 pt;
将 word 文档中的内容复制并粘贴到 Vaadin7 RichTextArea(或任何其他 Richtextfield)时,有很多不需要的 HTML 标签和属性。由于在当前项目中属性宽度做了一些有趣的事情,我想用以下函数删除它们
private String cleanUpHTMLcontent(String content) {
LOG.log(Level.INFO, "Cleaning up that rubbish now");
content = content.replaceAll("width=\"[0-9]*\"",""); // this works fine
content = content.replaceAll("width:[0-9]*[\.|]*[0-9]*pt;",""); // not working
content = content.replaceAll(";width:[0-9]*[\.|]*[0-9]*pt",""); // not working
content = content.replaceAll("width:[0-9]*[\.|]*[0-9]*pt",""); // not working
return content;
}
第一行可以很好地删除旧的 html 标签,如 width="500"
,其他行进入样式属性并尝试删除具有不同位置的 width:300.45pt;
等属性结肠。
该代码在测试页上运行良好http://www.regexplanet.com/advanced/java/index.html。我在这里生成了正则表达式字符串,专门用于 java,但它仍然无法正常工作。有人知道吗?
这是一个找不到宽度的例子属性
td style="width:453.1pt;border:solid windowtext 1.0pt;
更新
content = content.replaceAll("width:\s*[.0-9]*pt;",""); // doesn't work
content = content.replaceAll(";width:\s*[.0-9]*pt",""); // doesn't work
content = content.replaceAll("width:\s*[.0-9]*pt",""); // works :-)
看来,我还必须用反斜杠转义分号?我会测试一下
要删除带点的任意数字,您可以使用否定字符 class [.\d]*
或 [.0-9]*
:
"\bwidth:\s*[.0-9]*pt;"
\b
是一个单词边界(确保我们只匹配 width
作为一个完整的单词)。
详情:
\b
- 前导词边界width:
- 文字字符串width:
\s*
- 0+ 个空格符号[.0-9]*
- 0+ 个点或数字pt;
- 文字pt;