Java正则表达式匹配模式

时间:2012-02-15 13:23:45

标签: java xml regex

我正在尝试使用regexp来解析类似于此的字符串:

<tag>Text that is written here. This could happen here: <Inline::~Inline> </tag>

如何使用regexp替换“&lt;”和“&gt;”来自内联的字符。问题是Inline可能有不同的名称,在主标签内可以看到比较,例如'&lt; 20' 。

感谢。

3 个答案:

答案 0 :(得分:3)

假设内联标记:

  • 在其中有两次相同的字符串,一次前面有一个代字号
  • 总是有两个冒号

那么这应该有效:

    String s= "<tag>some text here > 20 <test::~test> and then </tag>";
    s = s.replaceAll("<((\\w+)::~\\2)>","$1");
    System.out.println(s);

无论调用内联/测试是什么。

已编辑 - 忘记将两个冒号放入: - )

答案 1 :(得分:1)

因为我觉得这是一个值得回答的问题,所以我把它写成答案而不是评论:

RegEx match open tags except XHTML self-contained tags当然是问题的第一个answer。 所以,要明确和简短:甚至不要尝试使用正则表达式

答案 2 :(得分:0)

此模式应与任何标记匹配:

<(.|\n)*?>

因此对于内联匹配:

<Inline(.|\n)*?>