Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 要检查大括号是否存在。但返回错误_Java_Regex - Fatal编程技术网

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您可以,我当然认为这是一个不错的小练习,但这是一个相当多的工作,而且有太多的实现,所以它应该很少比一个练习多——最好使用一个经过尝试和测试的实现。