Java 要检查大括号是否存在。但返回错误
我试图检查大括号中是否存在Java 要检查大括号是否存在。但返回错误,java,regex,Java,Regex,我试图检查大括号中是否存在字符串。但它返回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()); 提前感谢^表示字符串的开头
字符串
。但它返回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());
提前感谢
^
表示字符串的开头。应该删除它,因为您希望在字符串中的任何位置找到它
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());
哦,不要使用匹配项
,而是使用查找
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());
不过,正如Rohit所提到的,包含(“{”)
,会更简单
String code = "class Demo{public static void main(String[] args) {System.out.println(\"ABC\");}}";
System.out.println(code.contains("{"));
如果要进行替换,Matcher
确实有一个replaceAll
函数,但是String
也有该函数。这会在每个{
之前添加一行新行:(\{
是另一种转义{/code>的方法)
现在,如果我对这一点的理解是正确的,那么就不能用正则表达式进行代码缩进。它是增量/递归的,不起作用(很好)在正则表达式中。您需要手动迭代字符串才能执行此操作。^
表示字符串的开头。应该删除它,因为您希望在字符串中的任何位置找到它
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());
哦,不要使用匹配
,而是使用查找
。匹配
检查整个字符串是否与模式匹配,查找
在字符串中查找模式
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());
不过,正如Rohit所提到的,包含(“{”)
,会更简单
String code = "class Demo{public static void main(String[] args) {System.out.println(\"ABC\");}}";
System.out.println(code.contains("{"));
如果要进行替换,Matcher
确实有一个replaceAll
函数,但是String
也有该函数。这会在每个{
之前添加一行新行:(\{
是另一种转义{/code>的方法)
现在,如果我对这一点的理解是正确的,那么就不能用正则表达式进行代码缩进。它是增量/递归的,不起作用(很好)在正则表达式中。您需要手动迭代字符串才能执行此操作。您的正则表达式不允许包含任何字符以外的其他字符。此外,我修复了您的正则表达式-^
仅在字符串的开头匹配,因此您必须在字符串的开头有一个{
Matcher.matches()
将尝试使整个字符串与正则表达式匹配。Matcher.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());
您的正则表达式不允许包含其他字符。此外,我修复了您的正则表达式-^
仅在字符串的开头匹配,因此您必须在字符串的开头有一个{
Matcher.matches()
将尝试使整个字符串与正则表达式匹配。Matcher.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());
使用@Rohit Jain建议的code.contains(“{”)
,或者将其用作正则表达式:
Pattern p=Pattern.compile(“^*[{]*.”);
如果没有通配符,模式将只匹配一个字符串,即“{
或者使用@Rohit Jain建议的code.contains(“{”)
,或者将其用作正则表达式:
Pattern p=Pattern.compile(“^*[{]*.”);
如果没有通配符,模式将只匹配一个字符串,即“{
需要注释
// 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将接受匹配的第一个子字符串。需要注释
// 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将接受匹配的第一个子字符串。code.contains(“{”)
?code.contains(“{”)有什么问题
?我想找到每个花括号,并为其添加新行和制表符。是否可以使用matcher?是的,谢谢!我要将此字符串转换为约定。但使用“全部替换”是不可能的。请给我一个方法。@JhonF这并不容易,尽管应该有足够多的开源实现。例如,是一个开放源代码的Java IDE,它有许多代码格式选项。@JhonF您可以,我当然认为这是一个很好的小练习,但这是一个相当多的工作,而且有太多的实现,所以它应该很少比一个练习多——最好使用一个经过尝试和测试的实现。我想要找到每个大括号并为其添加新行和制表符。是否可以使用matcher?是的,谢谢!我要将此字符串转换为约定。但使用“全部替换”是不可能的。请给我一个方法。@JhonF这并不容易,尽管应该有足够多的开源实现,例如,是一个开放源代码的Java IDE,有许多代码格式化选项。@JhonF您可以,我当然认为这是一个不错的小练习,但这是一个相当多的工作,而且有太多的实现,所以它应该很少比一个练习多——最好使用一个经过尝试和测试的实现。