首页 > 解决方案 > ")" 匹配括号的正则表达式

问题描述

每个笑脸都必须有一张微笑的嘴,应该标有)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|//))$/

标签: javaregex

解决方案


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

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

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


推荐阅读