删除两个特定标记(java正则表达式)之间的所有字符
我想删除html内容和标签删除两个特定标记(java正则表达式)之间的所有字符,java,regex,string,Java,Regex,String,我想删除html内容和标签 <DATE> html content </DATE> html内容 这些是我尝试过的代码的不同版本,但都不起作用: content = content.replaceAll("<DATE>(?s:)</DATE>", ""); content = content.replaceAll("<DATE>(?:.|\n)</DATE>", ""); content = content.replac
<DATE> html content </DATE>
html内容
这些是我尝试过的代码的不同版本,但都不起作用:
content = content.replaceAll("<DATE>(?s:)</DATE>", "");
content = content.replaceAll("<DATE>(?:.|\n)</DATE>", "");
content = content.replaceAll("<DATE>" + Pattern.DOTALL + "</DATE>", "");
content = content.replaceAll("<DATE>(.*?)</DATE>", "");
content=content.replaceAll(“(?s:)”,”);
content=content.replaceAll(“(?:.|\n)”,”;
content=content.replaceAll(“+Pattern.DOTALL+”,”);
content=content.replaceAll(“(.*?”,”);
有什么建议吗
完整代码:
Path corpusPath = Paths.get(path + file);
String content = new String(Files.readAllBytes(corpusPath), charset);
content = content.replaceAll("<HEADLINE>", "<DOCHDR>");
content = content.replaceAll("</HEADLINE>", "</DOCHDR>");
content = content.replaceAll("<DATE>(.*?)</DATE>", "");
Path destPath = Paths.get(path + "Parsed\\" +file);
Files.write(destPath, content.getBytes(charset));
Path-corpusPath=Path.get(Path+file);
字符串内容=新字符串(Files.readAllBytes(corpusPath),字符集);
content=content.replaceAll(“,”);
content=content.replaceAll(“,”);
content=content.replaceAll(“(.*?”,”);
Path destPath=Path.get(Path+“Parsed\\”+文件);
write(destPath,content.getBytes(charset));
尝试使用下面的正则表达式删除
标记及其内容
content = content.replaceAll("(?s)<DATE>.*?</DATE>", "");
content=content.replaceAll(“(?s)。*?”,”);
说明:
DOTALL修改器启用DOTALL模式。它使点匹配甚至换行符也(?s)
与起始
标记匹配
将任何字符匹配到下一个*?
字符串<代码>?after
告诉正则表达式引擎进行最短匹配*
- 最后用空字符串替换匹配的字符
int
,因此,如果您尝试将其连接到字符串,您将在模式中得到一个不需要的整数(模式将是“32”
,这肯定是错误的)。无需转义正斜杠。是的,它可以在不转义斜杠的情况下工作。两个版本都有效。非常感谢你。你能解释一下原因吗?您放在前面的是什么?如果需要,请提供更多详细信息:(?s)
启用DOTALL模式。From:“在dotall模式下,表达式
匹配任何字符,包括行终止符。默认情况下,此表达式不匹配行终止符。”。回答不错。用户只需查看是否有清晰的标签。例如,我的标记带有一个补码,所以我必须在正则表达式上编辑它。