Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.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,每个笑脸都必须有一张微笑的嘴,嘴上应该标有)或D 我尝试使用以下代码执行此操作: import java.util.*; import java.util.regex.Pattern; public class SmileFaces { public static int countSmileys(List<String> arr) { String regx = "/^((:|;)(-|~)?|D|//))$/"; int count=0; ListIterato

每个笑脸都必须有一张微笑的嘴,嘴上应该标有
D

我尝试使用以下代码执行此操作:

import java.util.*;
import java.util.regex.Pattern;
public class SmileFaces {

  public static int countSmileys(List<String> arr) {
  String regx = "/^((:|;)(-|~)?|D|//))$/";
  int count=0;
  ListIterator<String> itr=arr.listIterator();

  while(itr.hasNext()){
    if(Pattern.matches(regx,itr.next())){
          count++;
        }
  }
      return count;
  }
}
import java.util.*;
导入java.util.regex.Pattern;
公共类笑脸{
公共静态int countSmileys(列表arr){
字符串regx=“/^(:|)(-124; ~?| D |/)$/”;
整数计数=0;
ListIterator itr=arr.ListIterator();
while(itr.hasNext()){
if(Pattern.matches(regx,itr.next())){
计数++;
}
}
返回计数;
}
}
我尝试了这个正则表达式进行微笑检查:
/^((:|)(| ~?| |/)$/
您可以通过使用两个反斜杠正确转义
\\)
来修补当前正则表达式,但我认为字符类在这里更容易阅读:

String regx = "^[;:][~-]?[D)]$";

请注意,Java正则表达式模式不像在其他语言(如PHP或Python)中那样使用分隔符,因此我将它们从您的模式中删除。此外,如果您想将上述模式与某些方法一起使用,例如
String#matches
,您可以删除
^
$
锚定。

您需要
\\)
而不是
//)
当我在测试用例中尝试此方法时,它失败了“@test public void test1(){List a=new arrarylist();a.add(“:”));a.add(“:D”);a.add(“:-”);a、 加上(“:-()”;assertEquals(2,SmileFaces.countSmileys(a));}'