2011-12-20 70 views
4

我是Java新手。有人能幫助我嗎?如何在正則表達式中轉義特殊字符***(。*)

Java中有沒有可以自動轉義下面的正則表達式中的特殊字符的方法?

之前逃離***(.*)和逃避\\*\\*\\*(.*)

我不想逃跑後(。*)在這裏。

+2

「逃犯」應該怎麼知道星號要逃脫,哪一個不想逃脫?你能爲此制定一個規則嗎? – 2011-12-20 10:04:53

+0

@TimPietzcker。看到您的評論後,我收到了一條線索。我可以在每個需要轉義的特殊角色之前添加一個指標。 – Pavan 2011-12-20 10:17:54

+1

如果你可以添加一個指標,爲什麼不在那裏添加反斜槓? – 2011-12-20 10:19:13

回答

6

表面上看,Pattern.quote似乎是做這項工作的。

然而,看看你的問題的細節,看起來你希望能夠轉義一些元字符,而不是其他人。 Pattern.quote不會這樣做,如果您將其應用於單個字符串。相反,它會引用每一個角色。 (爲了記錄,它沒有使用反斜槓,它使用「\ E」和「\ Q」。\,它整齊地避免瞭解析字符串以查找需要轉義的字符的代價)。

但是真正的問題是你沒有說過,報價者應該如何決定哪些元字符能夠逃脫,哪些字符保持完好。例如,它如何知道要擺脫前三個''字符,而不是「。」?

沒有一個更清晰的規範,你的問題是非常unanswerable。即使有了規範,也很少有機會找到一個簡單的方法來做到這一點。

IMO,更好的方法是在你從組件部分組裝模式之前進行轉義...假設這就是這裏發生的事情。

+0

謝謝你的答案斯蒂芬。 (( – Pavan 2011-12-20 10:30:27

+1

@JQone)如何讓客戶指定規則來區分特殊字符以逃離特殊字符而不是逃避,如果他們不能告訴你,你可以說你不能實現它(這是真的)。 – 2011-12-20 10:35:21