加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

通配符与正则表达式的关系

发布时间:2020-12-14 01:28:57 所属栏目:百科 来源:网络整理
导读:关系 首先,先给出关系。 通配符 正则表达式 * (.)* ? (.)? . . 本人在开发中,时常会把正则和通配符搞混,甚至一度以为通配是正则的子集。通配是一种简单的助记符号,功能单一,而正则更为强大和丰富。并且它们之间没有太大的联系,但是可以把通配符转化

关系

首先,先给出关系。

通配符 正则表达式
* (.)*
(.)?
. .

本人在开发中,时常会把正则和通配符搞混,甚至一度以为通配是正则的子集。通配是一种简单的助记符号,功能单一,而正则更为强大和丰富。并且它们之间没有太大的联系,但是可以把通配符转化为正则表达式。


举例

这里主要列举通配文件路径的例子,使用unix路径分隔符。一般用在文件路径的表示上,习惯用通配符多一些,而相同功能的通配符如果转化为正则则更显复杂,可读性也差一些。

通配符
含义
C:/files/*
C:/files目录下的所有文件和文件夹
等同于正则:C:/files/(.)*
C:/files/*.*
C:/files目录下的所有文件(或带.的文件夹)
等同于正则:C:/files/(.)*.(.)*
C:/files/*.txt C:/files目录下的所有txt文件
等同于正则:C:/files/(.)*.txt
C:/files/*/ C:/files目录下的所有子文件
C:/files/a.txt
C:/files目录下的a.txt文件
等同于正则:C:/files/a.txt
C:/files/*/*.txt
C:/files目录下的所有第一层子文件夹下的所有txt文件
C:/files/*/*/?.txt
C:/files目录下的所有第层子文件夹下的文件名长度不超过1的txt文件
C:/files/test*-with/*/gb/text_*/encoding-?.verify
先找到C:/files下的通配test*-with子文件夹;
在所有test*-with文件夹下找到所有二层子文件夹且名为gb的文件夹;
在gb文件夹下找到通配text_*的子文件夹;
在text_*文件夹中找到通配encoding-?.verify的所有文件;
返回所有找到的encoding-?.verify文件。


结语

要在程序中获得上述的通配文件的结果,单凭正则表达式实现起来效率不高,特别是稍显复杂的例子,因为牵涉到子文件夹的递归搜索。为实现复杂的文件路径匹配,我在网上找了很多资源,但没有找到很好的解决方案。无奈之下决定对Apache 的 commons-io包进行扩展,实现了初步的解决方案,还未进行程序优化和测试。现托管在http://code.taobao.org/p/commonsio_extend/src/。对开源的协议不是很熟悉,不知道这样做也没有违法什么协议之类的。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读