java - ")" 匹配括号的正则表达式
问题描述
每个笑脸都必须有一张微笑的嘴,应该标有)
或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|//))$/
解决方案
您可以通过使用两个反斜杠正确转义来修补当前的正则表达式\\)
,但我认为字符类在这里更容易阅读:
String regx = "^[;:][~-]?[D)]$";
请注意,Java 正则表达式模式不像在 PHP 或 Python 等其他语言中那样采用分隔符,因此我将它们从您的模式中删除。此外,如果您想将上述模式与某些方法一起使用,例如String#matches
,您可以删除^
和$
锚点。
推荐阅读
- python - 如何从 python lambda 返回一个 graphql Union 到 AWS appsync?
- python - YaccError 'Unable to build parser' 试图制作语法分析器
- go - 有没有一种方法可以在不需要任何特殊设置的情况下从另一个二进制文件中执行已编译的 golang 二进制文件中的函数?
- javascript - 如何从firebase获取简单的数组数据并获取它
- mysql - 我的 SQL Auto_increment 不适用于固定列
- python - 无法从 selenium 导入 webdriverwait
- javascript - 创建后检索频道 ID
- c# - 尝试使用 C# 中的 HTTPWebRequest 在 Shopify 中创建新产品列表时出错
- c++ - 带有新输入系统的 Unity NullReferenceException 错误
- javascript - 如何使用以前的对象设置文件列表?