java - 正则表达式检测 html 标签并替换一些

标签 java regex

有这样的 XML:

<Abc>
    <Bcd>C</Bcd>
    <Def>E</Def>
    <Fgh>G</Fgh>
</Abc>

将其更改为以下内容的正确 Java RegEx 是哪一个?

-Abc-
    -Bcd-Cde-/Bcd-
    <Def>E</Def>
    <Fgh>G</Fgh>
-/Abc-

我做到了:

myString.replaceAll("\\<(.*?)\\>","-$1-");

但我无法进行正确的排除,因此仅更改了一些标签。

更新:使用 Pshemo 答案的否定达到了目的:

myString.replaceAll("\\<?!(KWD|COM|PLN|PUN|TYP|STR)\\>","&lt;$1&gt;")

最佳答案

尝试

"\\<[AB]\\>"

用于您的正则表达式。它将找到<然后A或B然后>。欲了解更多信息,请参阅http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html

要进一步将其扩展为完整的字符集,您可以使用以下格式。

public class RegexString
{
    private static String myString = "<Abc>\n" 
            + "    <Bcd>C</Bcd>\n"
            + "    <Def>E</Def>\n" 
            + "    <Fgh>G</Fgh>\n" 
            + "</Abc>";
    private static final String HTML_TAGS = "/?(Abc|Bcd)";
    private static final String FULL_REGEX = "<" + HTML_TAGS + ">";

    public static void main(String[] args)
    {
          System.out.println(myString.replaceAll(FULL_REGEX, "-$1-"));
    }
}

关于java - 正则表达式检测 html 标签并替换一些,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18768878/

相关文章:

php - 如何在 PHP 中用单个标点符号替换所有重复的标点符号?

java - 在正则表达式 :java 中获取非法字符范围

java - 使用 Date API 的日期类的默认构造函数

java - 无法在 Hibernate 中检索自动生成的 key

python - 以下字符串的正则表达式模式?

java - Eclipse:同时替换多个不同的正则表达式

regex - RegExp_提取Google Data Studio中第一个点之前的所有内容

java - 获取jtable中勾选复选框的行值

java - 跨类访问H2连接

java - Android ArrayIndexOutOfBoundsException 向 mysql 插入行