我有一個複雜的正則表達式,我想申請。這是我的模式:如何正確地轉義此字符串?
/(?:^|\s|[\.(\+\-\,])(?:\$?)\$((?:[0-9]+(?=[a-z])|(?![0-9\.\:\_\-]))(?:[a-z0-9]|[\_\.\-\:](?![\.\_\.\-\:]))*[a-z0-9]+)/i
我怎樣才能聲明這是一個字符串,並確保一切都逃脫?
我有一個複雜的正則表達式,我想申請。這是我的模式:如何正確地轉義此字符串?
/(?:^|\s|[\.(\+\-\,])(?:\$?)\$((?:[0-9]+(?=[a-z])|(?![0-9\.\:\_\-]))(?:[a-z0-9]|[\_\.\-\:](?![\.\_\.\-\:]))*[a-z0-9]+)/i
我怎樣才能聲明這是一個字符串,並確保一切都逃脫?
在我看來,好像有在正則表達式很多不必要的東西
(?:\$?)
相同,只是\$?
那麼你真正可以擁有的是:
/(?:^|\s|[.(+\-,])\$?\$((?:[0-9]+(?=[a-z])|(?![0-9.:_\-]))(?:[a-z0-9]|[_.\-:](?![._\-:]))*[a-z0-9]+)/i
至於把它在一個字符串,你真的不必擔心這裏的反斜槓。那些需要加倍(「\」)。外部的「/」字符將被丟棄,並且尾隨的「i」修飾符將被傳遞到Pattern.compile()
方法中。
如果你想測試這種模式,我建議你看看使用正則表達式工具,如gskinner。它可以讓你放入一個模式,一個字符串,並突出顯示匹配。
只要有點靜態的解決方案就足夠了,並且如果您使用Eclipse IDE,則可以選擇在從剪貼板粘貼時正確轉義字符串。
首選項 - >爪哇 - >編輯 - >鍵入 - > [X]粘貼時逃生的文字...
第一步:通過擺脫不必要的反斜槓和組簡化你的模式:`/(?:[|[\s.(+,-])\$?\$((?:[0-9]+ (?= [AZ])|(?![0-9.:_-]))(?:[a-z0-9]|[.:_-](?![.:_-])) * [a-z0-9] +)/我' – Gumbo 2010-11-22 18:06:58