我试图检查String
的花括号的存在。但它返回false
。任何人都可以给我一个解决方案。
String code = "class Demo{public static void main(String[] args) {System.out.println(\"ABC\");}}";
Pattern p = Pattern.compile("^[{]");
Matcher m = p.matcher(code);
System.out.println(m.matches());
先谢谢
答案 0 :(得分:2)
需要评论
// the first character must be a {
Pattern p = Pattern.compile("^[{]");
Matcher m = p.matcher(code);
// the entire strings must match so you only accept "{" and nothing else.
System.out.println(m.matches());
我怀疑你不想^
而你想要find()
而不是matches()
Find会接受匹配的第一个子字符串。
答案 1 :(得分:1)
^
表示字符串的开头。它应该被删除,因为你想在字符串中的任何地方找到它。
哦,不要使用matches
,请改用find
。 matches
检查整个字符串是否与模式匹配,find
查找字符串中的模式。
String code = "class Demo{public static void main(String[] args) {System.out.println(\"ABC\");}}";
Pattern p = Pattern.compile("[{]");
Matcher m = p.matcher(code);
System.out.println(m.find());
尽管如此,contains("{")
,正如Rohit所说,会更简单。
String code = "class Demo{public static void main(String[] args) {System.out.println(\"ABC\");}}";
System.out.println(code.contains("{"));
如果您想进行替换,Matcher
确实有replaceAll
功能,String
也是如此。这会在每{
之前添加一个新行:( \\{
是另一种转义{
的方式
String code = "class Demo{public static void main(String[] args) {System.out.println(\"ABC\");}}";
System.out.println(code.replaceAll("\\{", "\n{"));
现在,如果我对你要去的地方是正确的,你就不能用正则表达式进行代码缩进。它是递增/递归的,在正则表达式中不起作用。您需要手动迭代字符串才能执行此操作。
答案 2 :(得分:1)
除了包含的内容之外,你的正则表达式不允许使用其他字符。另外,我仅在^
的开头修复了正则表达式String
匹配项,因此您必须在{
的开头设置String
。
Matcher.matches()
将尝试使整个字符串与正则表达式匹配。 Matcher.find()
正在检查String
String code = "class Demo{public static void main(String[] args) {System.out.println(\"ABC\");}}";
Pattern p = Pattern.compile("[{]");
Matcher m = p.matcher(code);
System.out.println(m.find());
答案 3 :(得分:0)
使用code.contains("{")
作为@Rohit Jain建议,或者使用此作为你的正则表达式:
Pattern p = Pattern.compile("^*.[{]*.");
如果没有通配符,模式将只匹配一个字符串,即"{"