java正则表达式通配符_常用通配符和正则表达式的误区

通配符适用的地方:shell命令行或者shell脚本中,一般用来匹配文件名的。

正则表达式适用的地方:字符串处理时,一般有一般正则和Perl正则。

最近写shell的时候发现一直以来对正则和通配符的理解有偏差,让我们再认识一下这几个基本的符号。

1,通配符

﹡ 匹配所有:匹配0个到多个的任意的字符。

?匹配任意单个字符

[ ! ] 匹配 不在中括号内的一个字符 (和正则中的 [ ^ ]作用相似,都是反向选择)

当要把以上的* ,?,[ ]当成参数或者字符串处理时,就要限制shell不能当成通配符。这时的处理方法是:加单引号或者用\(反斜杠转义)

2.正则表达式

字符匹配

.:匹配任意单个字符

*:匹配其前面一个字符出现任意次(区别与通配符的一到多个字符)

?:匹配其前面的字符1次或0次

+:匹配其前面一个字符出现至少一次(在扩展正则表达式中)

位置匹配

^:锚定行首

$:锚定行尾

\

\>或\b:锚定词尾,其前面的任意字符必须作为单词尾部出现

\B:非单词的开头或结尾

^$:空白行

分组匹配用() :

(ac)* :匹配ac这个分组出现任意次

\1:引用第一个左括号以及与之对应的右括号所包括的所有内容,同理还有\2,\3

断言匹配

java仅支持形式;而在其他语言中,或者在正则的设计中还有(?“name”)的格式

零宽断言

=exp>

!=exp>

!<=exp>

<=exp>

^(.(?

^(.(?

^((?!that).)*this(.(?

^((?!that).)*this((?!that).)*$

这4个正则表达式测试上述的几句话,结果都能够满足要求。

懒惰模式

懒惰限定符

代码/语法说明

*?

重复任意次,但尽可能少重复

+?

重复1次或更多次,但尽可能少重复

??

重复0次或1次,但尽可能少重复

{n,m}?

重复n到m次,但尽可能少重复

{n,}?

重复n次以上,但尽可能少重复

懒惰的限定符

分组和反向引用

(?.[a-z]*?)(/d)

表达式内可以使用    /2  来使用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值