例如:<element name="XYZ" type="string">9032905776</element>
在上面的正则表达式中,我们需要检查name属性是否具有值“XYZ”。
如果name属性包含“XYZ”,那么它应该跳过type =“String”并将9032905776屏蔽为***。
预期输出:<element name="XYZ" type="string">***</element>
final String expressionTemplate = "(?<=<element name=\"(?i:XYZ)\"[a-z?]>)(.*?)(?=</element>)";
System.out.println("Regex :"+expressionTemplate);
System.out.println("\nRequest Before :"+dummy);
System.out.println("Request After :"+dummy.replaceAll(expressionTemplate.toString(), "*****"));
out put:
答案 0 :(得分:0)
问题是,无论我们写什么正则表达式,都很容易想出一个它不起作用的情况。想象一下,在type="string"
内可以找到特殊字符。
相反,您应该使用真正的Java HTML解析器(例如,jsoup)
但是,如果你想忽略我的警告,并使用一个可以轻易打破某些异常输入的正则表达式,那么试试这样的事情:
final String expressionTemplate = "(?<=<element name=\"XYZ\"[^>]{0,99}>)(.*?)(?=</element>)";
已知问题:
>
)99
HTML评论等。