“)”匹配括号的正则表达式

时间:2019-09-22 06:14:25

标签: 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;
  ListIterator<String> itr=arr.listIterator();

  while(itr.hasNext()){
    if(Pattern.matches(regx,itr.next())){
          count++;
        }
  }
      return count;
  }
}

我尝试过使用此正则表达式进行微笑检查:/^((:|;)(-|~)?|D|//))$/

1 个答案:

答案 0 :(得分:0)

可以通过使用两个反斜杠正确地转义\\)来修补当前的正则表达式,但是我认为此处的字符类更容易阅读:

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

请注意,Java regex模式不会像在PHP或Python这样的另一种语言中那样使用定界符,因此我从您的模式中删除了它们。另外,如果您想将上述模式用于某些方法,例如String#matches,则可以删除^$锚点。