我需要滾動List並移除包含一些特殊字符的所有字符串。使用正則表達式我能夠刪除所有以這些特殊字符開頭的字符串,但是如何才能找到這個特殊字符是否在字符串中間?使用正則表達式查找帶有特殊字符的字符串
例如:
Pattern.matches("[()<>/;\\*%$].*", "(123)")
返回true,我可以刪除這個字符串
,但它並沒有用這種字符串的工作原理:12(3)。
使用\ *來查找字符串中「*」字符的出現是否正確?
感謝您的幫助! 安德烈
我需要滾動List並移除包含一些特殊字符的所有字符串。使用正則表達式我能夠刪除所有以這些特殊字符開頭的字符串,但是如何才能找到這個特殊字符是否在字符串中間?使用正則表達式查找帶有特殊字符的字符串
例如:
Pattern.matches("[()<>/;\\*%$].*", "(123)")
返回true,我可以刪除這個字符串
,但它並沒有用這種字符串的工作原理:12(3)。
使用\ *來查找字符串中「*」字符的出現是否正確?
感謝您的幫助! 安德烈
你還沒有的另一個受害者Java的不良命名.matches()
它試圖和匹配整個輸入和矛盾正則表達式匹配的非常清晰。
你想要的是匹配()<>/;\\*%$
中的一個字符。使用Java,您需要從這個Pattern
創建Pattern
,一個Matcher
並在此匹配使用.find()
:
final Pattern p = pattern.compile("[()<>/;\\*%$]");
final Matcher m = p.matcher(yourinput);
if (m.find()) // match, proceed
嘗試以下操作:
!Pattern.matches("^[^()<>/;\\*%$]*$", "(123)")
本採用了否定的字符類,以確保該字符串中的所有字符都沒有任何在類的人物。
你明顯否定了表達式,因爲你正在測試一個不匹配的字符串。
使用\ *來查找字符串中出現「*」字符是否正確?
是。
Pattern.matches()
試圖匹配整個輸入。所以,因爲你的正則表達式說輸入必須以「特殊」字符開頭,12(3)
不匹配。
工程:) Pattern.compile(「[()<> /; \\ *%$ ]。*「)。matcher(res).find() –
請注意這裏'\ *':它將匹配字面星號。如果這是你想要的,那很好。如果你想匹配_both_反斜槓和星號,你需要匹配'「[()<> /; \\\\ *%$]''。 – fge