我需要滚动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