我正在查找正則表達式模式,以查明是否有任何4個特定字符存在於字符串變量中:撇號(')破折號( - )em破折號( - )顛倒問號(¿)查找字符串中的特定特殊字符
我試過包含字符串的方法,但使用的是我得比較4倍:
abc.contains("'")||abc.contains("-")||abc.contains("—")||abc.contains("¿")
是否有使用正則表達式更好的辦法?因爲我必須爲許多變量實現相同的功能。
我也可以知道哪個角色是以最短的方式找到的?
我正在查找正則表達式模式,以查明是否有任何4個特定字符存在於字符串變量中:撇號(')破折號( - )em破折號( - )顛倒問號(¿)查找字符串中的特定特殊字符
我試過包含字符串的方法,但使用的是我得比較4倍:
abc.contains("'")||abc.contains("-")||abc.contains("—")||abc.contains("¿")
是否有使用正則表達式更好的辦法?因爲我必須爲許多變量實現相同的功能。
我也可以知道哪個角色是以最短的方式找到的?
你可以試試這個方法
if (abc.matches(".*?['\\-—¿].*"))
如果將接受任何字符串匹配序列:
.*
- 任意字符零個或多個(旁邊新線)['\\-—¿]
- 一個'
-
—
¿
(-
是正則表達字符類中的特殊字符 - [...]
- 所以我需要用\
逃避它,對於Java有寫爲"\\"
或放置後立即[
或之前]
).*
- 再次零個或多個任意字符(旁邊新線)謝謝..它似乎是工作! – Keethan 2013-04-20 13:01:26
爲什麼'。*'?他們只是在這裏減緩正則表達式......'abc.matches(「[-'-¿]」)'顯然夠用了(連字符也可以作爲字符類的第一個或最後一個字符,不得不逃脫它)。 – Loamhoof 2013-04-20 13:58:40
@Loamhoof'matches'只有*整個*字符串匹配正則表達式纔會返回true,所以'。*'是必不可少的。確實,將連字符作爲字符類的第一個或最後一個元素也會使其成爲字面值,但我更願意將其忽略掉,因爲如果其他人沒有正則表達式知識會嘗試向字符添加新字符,它將防止將來發生錯誤類。 – Pshemo 2013-04-20 14:08:46
請注意,這實際上並不是連字符,而是連字符。連字符: - ,減號: - ,破折號: - ,破折號: - 。 – 2013-04-20 12:53:09
我可否也知道哪個角色是以最短的方式找到的? – Keethan 2013-04-20 13:39:54