如何在正则表达式中转义特殊字符***(。*)

时间:2011-12-20 09:57:30

标签: java regex escaping

我是Java新手。有人可以帮帮我吗?

Java中是否有任何方法可以自动转义下面正则表达式中的特殊字符?

在转发 ***(.*) 之前以及在转发 \\*\\*\\*(.*) 之后

我不想在这里逃避(。*)。

1 个答案:

答案 0 :(得分:6)

从表面上看,Pattern.quote似乎可以胜任。

然而,看一下你问题的细节,你似乎希望/期望能够逃避一些元字符,而不是其他元字符。如果将其应用于单个字符串,Pattern.quote将不会这样做。相反,它会引用每个角色。 (对于记录,它不使用反斜杠。它使用“\ E”和“\ Q”。\它可以很好地避免解析字符串以查找需要转义的字符的成本。)

但真正的问题是你还没有说过引文应该如何决定逃避哪些元字符以及哪些元字符完好无损。例如,它如何知道逃避前三个''字符,而不是“。”?

如果没有更清晰的规范,您的问题几乎无法回答。即使有规范,也很难找到一种简单的方法来实现这一目标。

IMO,更好的方法是在从组件中组装模式之前进行转义...假设这是在这里发生的事情。