所以我挖出了一个旧项目,我正在检查代码,我偶然发现了这段代码:
Sentence = Sentence.replaceAll("\\<[^>]*>", "");
这个正则表达式是什么意思?它从字符串中删除了什么?
答案 0 :(得分:2)
正则表达式:"\\<[^>]*>"
\\
在java中使用时必须转义正则表达式中的反斜杠。所以,\\<
匹配文字<
符号。[^>]*
匹配任何不是>
零次或多次的字符。>
匹配符号>
<强>示例:强>
<b>
</b>
<a href="blah">
答案 1 :(得分:1)
您想要用空字符串
替换所有字符串,例如<something_Else_than_char_>_many_times_or_none_between_angle_brackets>
答案 2 :(得分:1)
由于您没有指定此正则表达式的哪个部分,因此您不熟悉这里的完整说明
\\<
将与<
匹配(实际上无需使用<
转义\\
,因为在此上下文中它不是正则表达式字符串)[^>]
被否定character class,这意味着它代表除>
之外的任何字符*
是quantifier,这意味着它之前的元素可以显示零次或多次 [^>]*
是2.和3的组合。这意味着它将接受零个或多个非>
个字符>
代表>
文字因此,简而言之\\<[^>]*>
可以重写为<[^>]*>
,代表以<
开头的文字,以>
结尾,但要防止它匹配太长的文字,例如
<foo> bar <baz>
^^^^^^^^^^^^^^^
感谢[^>]*
部分在这些>
<
个字符之间无法接受>
。所以它只会找到并删除这些部分
<foo> bar <baz>
^^^^^ ^^^^^
留下bar
。
请注意,此正则表达式还将匹配格式不正确的XML
<foo <bar> baz
^^^^^^^^^^
这可能会给您带来一些问题,这就是为什么最好使用专为它设计的工具解析XML / HTML文本 - 解析器。
答案 3 :(得分:0)
任何以"<"
开头的模式,用空字符串替换第一个">"
的所有内容。你不需要逃避 "<"
例如:
<xyz>abc<\\xyz>
到
abc