关于Java的正则表达式

PENGGB023 2016-06-06 08:28:56
代码意图:寻找两个相连的运算符号(+-*/)
按照正规语法这样写,运行会报错:
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class OneTimeAtLeast
{
public static void main(String[] args)
{
String str = "12*/34";
Matcher m = Pattern.compile("[\\+-\\*/]").matcher(str);
if (m.find())
System.out.println(m.start());
else
System.out.println("没有匹配到!");
}
}
可是用斜杠 / 而不是反斜杠 \ 来转意却能运行成功
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class OneTimeAtLeast
{
public static void main(String[] args)
{
String str = "12*/34";
Matcher m = Pattern.compile("[/+-/*/]").matcher(str);
if (m.find())
System.out.println(m.start());
else
System.out.println("没有匹配到!");
}
}

为什么!为什么!为什么!苦恼死我了!
...全文
123 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
rickylin86 2016-06-06
  • 打赏
  • 举报
回复
放到中括号中的+*/不需要转义.会变成普通字符.至于-这个你把它放在最开始就可以了.如果出现在中括号中间的话表示某个区间段. 如果题目要求是两个相邻的运算符号.那么应该是 [-+*/]{2}

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧