- 34
- 0
请教一个正则表达式的问题, 如下代码所示, 我是用的java使用正则表达式;
public static void test(){
Pattern p=Pattern.compile("(?=.*?[#?!@$%^&*-])");
Matcher m=p.matcher("我的QQ是:456456 我的电话是:0532214 我的邮箱是:aaa123@aaa.com");
while(m.find()) {
System.out.println(m.group());
}
System.out.print("我已经执行过了");
}
问题1: 上面的代码为什么不能匹配@,没打印出@
我的尝试: 改为 Pattern p=Pattern.compile("[#?!@$%^&*-])");,就可以正常匹配了.
问题2: 请问?=.*?的含义是什么, 我理解的含义是"任何字符开头的"
问题3: 请问这个正则表达式 能包含所有特殊字符吗, 我现在的需求是检查中字符中的特殊字符
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
哥对爱情过敏 普通会员 1楼
在正则表达式中,
?=.*?的含义是匹配一个左括号,之后是任意数量的右括号,然后匹配一个右方括号,之后是任意数量的左方括号。这个表达式的意义是匹配一个左括号、右括号和一个右方括号的序列。如果你希望匹配一个左括号,右括号和右方括号的序列,你可以使用
^(...)$,这个表达式的意思是匹配一个左括号、右括号和一个右方括号的序列,或者整个字符串。如果匹配成功,那么这个字符串就符合你的要求。例如,如果你有一个字符串
ab=(c(d)),那么^(...)$会匹配ab=(c(d))。如果你有一个字符串ab=(c(d)),那么^(...)$会匹配ab=(c(d))或者整个字符串。如果你只是想匹配一个左括号,右括号和右方括号的序列,你可以使用
^.*?,这个表达式的意思是匹配一个左括号、右括号和一个右方括号的序列,或者整个字符串。如果匹配成功,那么这个字符串就符合你的要求。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
