这个正则表达式在这个replaceAll()方法中意味着什么?

时间:2014-08-20 12:44:25

标签: java regex

所以我挖出了一个旧项目,我正在检查代码,我偶然发现了这段代码:

Sentence = Sentence.replaceAll("\\<[^>]*>", "");

这个正则表达式是什么意思?它从字符串中删除了什么?

4 个答案:

答案 0 :(得分:2)

正则表达式:"\\<[^>]*>"

  • \\在java中使用时必须转义正则表达式中的反斜杠。所以,
  • \\<匹配文字<符号。
  • [^>]*匹配任何不是>零次或多次的字符。
  • >匹配符号>
  • 替换部分负责用空字符串替换所有匹配的字符。

<强>示例:

<b>
</b>
<a href="blah">

DEMO

答案 1 :(得分:1)

您想要用空字符串

替换所有字符串,例如<something_Else_than_char_>_many_times_or_none_between_angle_brackets>

答案 2 :(得分:1)

由于您没有指定此正则表达式的哪个部分,因此您不熟悉这里的完整说明

  1. \\<将与<匹配(实际上无需使用<转义\\,因为在此上下文中它不是正则表达式字符串)
  2. [^>]被否定character class,这意味着它代表除>之外的任何字符
  3. *quantifier,这意味着它之前的元素可以显示零次或多次
  4. [^>]*是2.和3的组合。这意味着它将接受零个或多个非>个字符
  5. >代表>文字
  6. 因此,简而言之\\<[^>]*>可以重写为<[^>]*>,代表以<开头的文字,以>结尾,但要防止它匹配太长的文字,例如

    <foo> bar <baz>
    ^^^^^^^^^^^^^^^
    

    感谢[^>]*部分在这些> <个字符之间无法接受>。所以它只会找到并删除这些部分

    <foo> bar <baz>
    ^^^^^     ^^^^^
    

    留下bar


    请注意,此正则表达式还将匹配格式不正确的XML

    <foo <bar> baz
    ^^^^^^^^^^
    

    这可能会给您带来一些问题,这就是为什么最好使用专为它设计的工具解析XML / HTML文本 - 解析器。

答案 3 :(得分:0)

任何以"<"开头的模式,用空字符串替换第一个">"的所有内容。你不需要逃避 "<" 例如:

<xyz>abc<\\xyz>

abc