2013-03-03 81 views
0

我使用的下一個源:如何將字符「 - 」和「`」添加到字符串正則表達式?

Matcher mather = Pattern.compile("(\\p{Alnum}*" + subtext + "\\p{Alnum}*)").matcher(ssb.toString()); 

但如果字符串= "fefrefewre-rfrefrf"或 「fefrefewre`rfrefrf」 我奧美= 「fefrefewre」

我需要馬瑟= "fefrefewre-rfrefrf"或「fefrefewre`rfrefrf 「

如何在字符串正則表達式中添加字符」 - 「和」`「?

潛臺詞= "fefref" - 例如

+0

什麼是'subtext'? – Makoto 2013-03-03 18:02:10

+0

subtext =「fefref」例如 – 2013-03-03 18:03:01

+0

所以這是一個合法的字符串發生了變化?這是一個不尋常的正則表達式,然後... – Makoto 2013-03-03 18:03:48

回答

3

看起來你只是想比賽「 - 」除了和「`」符號的「\ p {}阿爾法」。

我覺得這是最簡單的解決方案:

Matcher mather = Pattern.compile("((\\p{Alnum}|[\\-`])*" + subtext + "(\\p{Alnum}|[\\-`])*)").matcher(ssb.toString()); 
+1

暫時爲+1,因爲我_這個問題正在問這個問題。一個注意:除非連字符在一個範圍內,否則你可能很好,不包括逃逸斜線。 – Wiseguy 2013-03-03 18:12:19

+0

是的,謝謝它的工作 – 2013-03-03 18:13:33

+0

@Wiseguy不確定。但是如果稍後添加任何東西(短劃線之前的符號),它可能會中斷。比對不起更安全。 – 2013-03-03 18:15:11

3

而不是使用POSIX字符類,你似乎沒有很好的理解,你可能只是想允許的字符添加到[]字符類

Matcher mather = Pattern.compile("[a-zA-Z0-9`-]*" + subtext + "[a-zA-Z0-9`-]*").matcher(ssb.toString()); 

-具有在字符類轉義,除非它是在開始或它的端部。

+1

+1 - 這完全等同於我的解決方案,更簡潔,高效,可讀。我會改變的唯一事情就是無論如何逃避短跑。 – 2013-03-03 18:33:06