您当前的位置:首页 > 互联网教程

通配符和正则表达式的区别

发布时间:2025-05-24 22:32:34    发布人:远客网络

通配符和正则表达式的区别

一、通配符和正则表达式的区别

1、基本上解释就是通配符是系统命令使用,一般用来匹配文件名或者什么的用在系统命令中。而正则表达式是操作字符串,以行尾单位来匹配字符串使用的。

2、还有一点需要注意的是:*在通配符和正则表达式中有其不一样的地方,在通配符中*可以匹配任意的0个或多个字符,而在正则表达式中他是重复之前的一个或者多个字符,不能独立使用的。比如通配符可以用*来匹配任意字符,而正则表达式不行,他只匹配任意长度的前面的字符。

二、正则表达式“或“的使用

正则表达式,又称规则表达式。是计算机科学的一个概念。

正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。

正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

检查字符串是否符合正则表达式中的规则,有一次不匹配,则返回false。如:

String reg="[a-zA-Z]\\d?";//次表达式表示字符串的第一位只能是字母,第二位只能是数字或没有boolean flag=str.matches(reg);//返回结果为true。

所谓切割,即是按一定的规则将字符串分割成多个子字符串,如:

String str="zhangsan,lishi,wangwu"。

String reg=",";//表示以逗号作为切割符。

String[] arr=str.split(reg);//返回结果为{“zhangsan”,"lisi","wangwu}。

即将字符串中符合规则的字符替换成指定字符,如:

String str="sfhjhfh136hjasdf73466247fsjha8437482jfjsfh746376"。

str.replaceAll("\\d{3,}","#");//表示将连续出现三个或三个以上的数字替换成“#”。

参考资料来源:百度百科-正则表达式

三、linux中 正则表达式和通配符的区别

1、它是由shell解析,并且一般用于匹配文件名,实际上就是shell解释器去解析的特殊符号,linux系统通配符有几下几种:

2、[...]:匹配中括号内出现的任意一个字符

3、[!...]:不匹配中括号内出现的任意一个字符

4、一般出现在要shell命令或脚本中,匹配特定的文件名

5、它是一个字符匹配标准,一些命令工具按此标准实现字符匹配,根据命令支持的匹配功能可分为基础正则表达式和扩展正则表达式,常用于支持正则表达式的工具,如sed,grep,awk...

6、*:匹配其前面一个字符出现任意次

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

8、\<或\b:锚定词首,其后面的任意字符必须作为单词首部出现

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

10、(ab)*:匹配ab这个分组出现任意次

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

12、[:cntrl:]:控制字符.在ASCII表中对应八进制000到 037,和177('DEL').

13、[:graph:]:匹配打印字符,相当于'[:alnum:]'+'[:punct:]'.

14、[:print:]:可打印字符,相当于'[:alnum:]','[:punct:]',和space.

15、[:punct:]标点符号,'!"#$%&'()*+,-./:;<=>?@ [\ ] ^ _'{|}~'

16、[:space:]空白字符,tab, newline, vertical tab, form feed, carriage return, and space.

17、[:xdigit:]任何16进制的数字,相当于[0-9a-fA-F]

18、所以:^[[:space:]]*$:匹配没有任何内容的行

19、需要注意:[]中的特殊字符如.已经失去了其特殊含义,和方括号中的普通字符[abc]一样。