我看到了一个代码示例,并没有理解它如何仅打印Print语句。 感谢你的帮助。
String str = "<a href=/utility/ReportResult.jsp?reportId=5>Print</a>";
System.out.println(str.replaceAll("\\<.*?\\>", ""));
OutPut: Print
如何修改我的正则表达式以打印Print&lt;&gt; Report而不是PrintReport。以下是我的正则表达式和声明。 String str =&#34;打印&lt;&gt;报告&#34;;
System.out.println(str.replaceAll("<.*?>", ""));
答案 0 :(得分:1)
你不必逃脱<
(棱角撑)。所以在java str.replaceAll("<.*?>", "")
就足够了。
工作原理:
<.*?>
- &gt;首先搜索<
然后匹配所有内容,直到下一个>
。请注意,.*?
称为 lazy 选择器/匹配器。
答案 1 :(得分:1)
要打印Print<>Report
而不是PrintReport
,请按*
更改+
:
System.out.println(str.replaceAll("<.+?>", ""));
// here __^
*
表示 0 或更多先例字符
+
表示 1 或更多先例字符
答案 2 :(得分:0)
它的正则表达式说什么b / w“&lt;”和“&gt;”必须用“”(空白字符串)重新表示 所以
<a href=/utility/ReportResult.jsp?reportId=5>==> ""(blank)
</a>==>""(blank)
并且只剩下“打印”
答案 3 :(得分:0)
首先,前导反斜杠被视为Java的转义序列,因此实际正则表达式为\<.*?\>
\<' matches the
&lt;`字符(反斜杠再次是一个转义序列,表示后面的字符应按字面解释而不是正则表达式运算符)。这是html标签的开头。
.
令牌匹配任何字符。
?
是一个不情愿的量词,表示前面的标记(在这种情况下是任何字符)应该匹配零次或多次。
/>
与标记的结尾匹配。由于?
不情愿,.
与此令牌可以匹配的字符不匹配。