当前位置:  技术问答>linux和unix

关于通配符和正则表达式

    来源: 互联网  发布时间:2017-02-23

    本文导语:  “ * ”这个符号,在被当做通配符时和被当做正则表达式的时候的解释是完全不同的。那么当我使用一个支持正则表达式的程序时,用到了*号,那它默认会被认为是通配符还是正则表达式?如果默认为正则表达式的...

“ * ”这个符号,在被当做通配符时和被当做正则表达式的时候的解释是完全不同的。那么当我使用一个支持正则表达式的程序时,用到了*号,那它默认会被认为是通配符还是正则表达式?如果默认为正则表达式的话,就相当于支持正则表达式的程序都不支持通配符了?这样的话,在我想要使用通配符的时候,还得要提前看看我使用的程序是不是支持正则表达式,如果确认不支持才能用通配符?

|
”默认为正则表达式的话,就相当于支持正则表达式的程序都不支持通配符“是这样的。
Regular Expressions
 r*         matches zero or more r's.
正则表达式中不支持通配符,要达到通配符的效果可以使用”.*“。


|
wildcard 只用于shell的cmd line 的path 参数(目录名,文件名);
对于非shell的应用而言,没有wildcard的概念;

那么当我使用一个支持正则表达式的程序时,用到了*号,那它默认会被认为是通配符还是正则表达式?
若非shell应用,*会被认为是正则表达式;
若为shell,并且* 在路径参数什么,shell做解释;否则,shell不对其进行处理,直接传给进程;

如果默认为正则表达式的话,就相当于支持正则表达式的程序都不支持通配符了?
感觉应该区分上下文;
显然shell时支持正则表达式的,也是支持通配符的;

这样的话,在我想要使用通配符的时候,还得要提前看看我使用的程序是不是支持正则表达式,如果确认不支持才能用通配符?
shell会自动区分;
其他非shell只支持正则表达式;

不是非常确定




|
shell只支持通配符。

你使用的awk, sed, egrep支持正则表达式, 它们是独立的程序, 只不过设置了PATH环境变量并放置到/usr下, 于是你感觉像shell命令一样. 你只是借助shell运行这些程序, 传入命令行参数(正则表达式)而已.

linux下C库支持POSIX标准正则,所以一般的linux工具都是POSIX标准的,而不是PERL标准的。如果需要开发自己的正则程序,可以使用regex.h这个系列的POSIX正则接口。

另外,shell执行一个程序时,shell会先对你的命令进行一次过滤,所以需要注意你命令行传入的正则表达式是否会被转移,当使用"时通常你需要做更多的转移工作,当使用'时便不会那么麻烦了. 但有时候我们又希望''内使用shell变量, 但这又是不现实的, 所以必须使用"外加一些额外的转移工作保证正则表达式传入到程序时保持原样.

    
 
 

您可能感兴趣的文章:

  • mysql正则表达式 LIKE 通配符
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • php 通配符实现方法
  • sql通配符三个例子
  • css 通配符用法总结
  • SQL LIKE 语句中的通配符
  • 文件通配符问题
  • 怎么用通配符查找子目录下的文件
  • 急问bash shell中替换字符串中某字符为通配符的问题。
  • shell if then fi 测试条件 关于通配符
  • sql通配符语句用法简介
  • sql通配符用法参考
  • PHP 只允许指定IP访问(允许*号通配符过滤IP)
  • 大家请把自己知道的 Unix/Linux 下的垃圾文件通配符类型告诉我,好吗?送上100分。
  • sql 通配符用法实例教程
  • SQL Server通配符用法示例
  • jQuery的选择器中的通配符使用介绍
  • sql模糊查询与sql通配符的用法
  • sql server排序之通配符过滤与数据分组
  • '*'是数据库里的通配符么?
  • sql 通配符实例分享
  • SQL LIKE 通配符用法分享


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3