我知道使用它:
public String RemoveTag(String html){
html = html.replaceAll("\\<.*?>","");
html = html.replaceAll(" ","");
html = html.replaceAll("&","");
return html;
}
这将删除html字符串中的所有标记。但问题是如何在<.*?>
之间获得一个狂野的字符。有人可以给我一个关于如何在String中获取狂野角色的更详细的解释。
这样做的主要原因是我仍然有这个字符“在起点处有一个@并且在终点处有一个”,我希望摆脱"@"
和"}"
之间的所有内容
答案 0 :(得分:2)
正则表达式可以通过构建finite automaton来实现,因为每个正则表达式都有一个有限的确定性自动机,反之亦然。
如果您想要保留这些字符,那么您所寻求的正则表达式为@.*?}
:您可以将其替换为"@}"
而不是""
。它将类似于:s.replaceAll("@.*?}", "@}")
[s
是你的字符串]。
看起来你可能需要正则表达式“@。*?\}”,尽管模式识别器在看不到前面的}
时应该忽略特殊的{
字符。为了安全起见:"@.*?\\}"
应该以@WayneBaylor发布的方式工作。
您可能需要阅读more on regular expressions
答案 1 :(得分:2)
replaceAll(...)的第一个参数是正则表达式字符串。示例中的.*?
是匹配任何内容的部分。所以,如果你想要一个能够摆脱“@”和“}”之间所有东西的正则表达式,你会使用类似的东西:
String exampleText = "Start @some text} finish.";
exampleText.replaceAll("@(.*?)\\}", "@}");
System.out.println(exampleText); // prints "Start @} finish."
注意相同的模式:.*?
。括号,这里是可选的,仅用于分组。另请注意}
使用反斜杠进行转义,因为它在正则表达式中具有特殊含义。
有关Java正则表达式支持的更多信息,请参阅Pattern class。