POSIX BRE和ERE的metacharacters(元字符)

实战封神!YOLOv7 轻量化部署全攻略:ONNX格式转换+TensorRT极致加速(速度直接提升3-5倍,精度无损) 部署核心链路,这是YOLO系列部署的最优解,速度提升3~5倍,精度无损;ONNX是桥梁:解决模型兼容性问题,简化后能去掉冗余节点,是TensorRT加速的前提;TensorRT是核心:NVIDIA显卡的极致加速引擎,FP16量化是速度与精度的最优平衡,无需手动配置,一键开启;轻量化终极组合YOLOv7-tiny + 416尺寸 + TensorRT FP16,速度提升5~8倍,满足所有实时检测场景;避坑核心:转换参数必加,推理尺寸必须一致,engine文件显卡专属。 阅读详情

转自:http://blog.youkuaiyun.com/a627088424/article/details/15435873

从根本上来看,正则表达式是由两个基本组成部分所建立:一般字符与特殊字符。一般字符指的是任何没有特殊意义的字符。在某些情况下,特殊特殊字符也可以视为一般字符。特殊字符称为元字符(metacharacter)。

BRE:基本正则表达式(Basic Regular Expression)

ERE:扩展的正则表达式(Extended Regular Expression)


   

POSIX BRE与ERE的meta字符

  

字符

  BRE/ERE

        

                     模式含义

    \

 两者都可

通常可以关闭后续字符的特殊含义。有时则是相反的打开特殊含义,例如:\(...)\与\{...\}。

    .

 两者都可

匹配任意单个字符,但NUL除外。独立程序也可以不允许匹配换行字符。

    *

 两者都可

匹配在它之前的任何数目(或没有)的单个字符。

ERE:此前置字符可以是正则表达式,例如:因为.号表示任意字符,所以.*表示“匹配任一字符的任意长度”。

BRE:*若置与正则表达式的第一个字符,不具任何特殊意义。


tol.toy 匹配不到toltoy,而tol.*toy可以。

    ^

 两者都可

BRE:仅在正则表达式的开头具有特殊意义,像^abc表示以abc开头的行,而a^b中则表示^本身字面意思。

ERE:置于任何位置都有特殊意义,像ab^cd这样的正则表达式是有效的,只是无法匹配到任何内容,因为^前置了文本,会让其无法匹配到“字符串的开始”。

    $

 两者都可

BRE:仅在正则表达式的结尾具有特殊意义,像abc^表示以abc结尾的行,而a^b中则表示^本身字面意思。

ERE:置于任何位置都有特殊意义,像ab$cd这样的正则表达式是有效的,只是无法匹配到任何内容,因为$后置了文本,会让其无法匹配到“字符串的结尾”。

   [...]

 两者都可

方括号表达式,匹配方括号内的任一字符。

连字符(-)指的是字符范围。

^符号置于方括号里的第一个字符时,具有反向意义:指的是不在方括号内的任何字符。

作为首字符的一个连字符或结束方括号(]),则被视为列表的一部分。所有其他的meta字符也为列表中的一部分(也就是表示其字面意思,而不具有特殊意义)。

方括号表达式里可能会含有排序字符,等价字符以及字符集。

  \{n,m\}

   BRE

匹配在它前面的单个字符重现相应次数的行。

\{n\}指重现n次。\{n,\}则为至少重现n次。而 \{n,m\}为重现n到m次。n与m的值必须介于0到RE_DUP_MAX(含)之间,后者最小值为255。RE_DUP_MAX是POSIX定义的符号型常数,且可以通过getconf命令取得。它的最小值为255,不过部分系统允许更大值,如GNU/Linux为32767.

  

   BRE

将\(与\)间的模式存储在特殊的“保留空间”。最多可以将9个独立的子模式存储早单个模式中。匹配于子模式的文本,可以通过转义序列\1至\9,被重复使用在相同的模式里。例如:ab.*\1,指的是匹配于ab组合的两次重现,中间可存在任何数目的字符。

    \n

   BRE

重复在\(与\)方括号内第n个子模式至此点的模式。n为1至9的数字,1为由左开始。

   {n,m}

   ERE

与先前提及BRE的 \{n,m\}一样,只不过没有反斜杠。

    +

   ERE

匹配前面正则表达式的一个或多个实例。例:ab+c,表示中间有至少有一个b,等同于abb*c。

    ?

   ERE

匹配前面正则表达式的零个或一个实例。例:ab?c匹配的有ac与abc,就这两个。而ab*c,后者匹配中间有任意个b。

    |

   ERE

匹配|符号前面或后面的表达式。

   (  )

   ERE

匹配于方括号括起来的正则表达式群。组合。

利用它可以构建复杂而灵活的正则表达式。

例:[Tt]he  (CPU|computer)  is

例:read|write+指的是正好一个read,或write后面接着任意个数个e字符,比较有使用的模式应该是(read|write)+,值的是有一个read或重现多个read,或则一个write或重现多个write。

例:(read|write)+所指的字符串间不能有空白。((read|write)[[:space:]]*)+则是用以匹配多个连续出现的read或是write,且中间可能被空格隔开。

 

POSIX的方括号表达式:

为配合非英语环境,POSIX标准强化其字符集范围的能力。[a-z]表示a到z的小写英文,而法文è是字母字符,但是却不在[a-z]中。有例如,在Czech与Spanish语系下,ch两个字符会保持连续状态,在匹配时会被视为单个独立单位。

POSIX也在术语上做了变动,早先看到的[]称为字符集(character class),在POSIX标准下,现在叫括号表达式(bracket expression)。对原先进行了扩充。

另有额外的组成部分。

包括:

字符集(Character class)

    以[:与:]将关键字组合起来的POSIX字符集。关键字表示各种不同的字符集。

排序符号(Collating symbol)

    排序符号指将多个字符序列视为一个单位。使用[.与.]将字符组合起来。排序符号在系统所使用的特定locale上各有其定义。

等价字符集(Equivalence class)

    等价字符集列出的是应十二位等值的一组字符,例如e与è。它由取自于locale的名字元素组成,以[=与=]括住。


这三种构造都必须使用方括号表达式。例如[[:alpha:]!]匹配任一英文字母字符或惊叹号(!);而[[.ch.]]则匹配于ch,而不是字母c或h。在法文French的locale里,[[=e=]]可能匹配于e,é,è,ê,ë。


需要注意写法,像[:alpha:]这样,是匹配:,a,l,p,h,a,,表示匹配英文字母的正确写法应为[[:alpha:]]。要让]进入集合中,必须将它放在列表前,如:[]*\.]。要让减号-进入该集合,也请将它放在列表最前端。要让他两同时进入列表,请将右方括号放在第一个字符,减号放到最后一个字符,如[]*\.-]


POSIX字符集:

类别

匹配字符

[:alnum:]

数字字符

[:alpha:]

字母字符

[:blank:]

空格(space)与定位符(tab)

[:cntrl:]

控制字符

[:digit:]

数字字符

[:graph:]

非空格字符(nonspace)

[:lower:]

小写字母字符

[:print:]

可显示字符

[:punct:]

标点符号字符

[:space:]

空白字符

[:upper:]

大写字母字符

[:xdigit:]

十六进制数字


最后,POSIX明确陈述:NUL字符(数值的零)不需要时刻匹配的。这个字符在C语言里是用来指出字符串结尾,而POSIX标准则希望让它是直接了当的,通过正规C字符串的使用实现其功能。除此之外,另有其他个别的工具程序不允许使用.(点号)meta字符或方括号表达式来进行换行字符匹配。


连字符依然可以用
[0-9a-fA-F]可以表示十六进制数字[0123456789abcdefABCDEF]

[0-9]表示[0123456789]

....

[^]不是有效的正则表达式。可以这样匹配^,[\ ^]


BRE运算符优先级

由高到底:

[..]  [==]  [::]                                   用于字符排序的方括号表达式

\metacharacter                            转义的mera字符

[]                                                    方括号表达式

   \digit                                   子表达式与后项引用

*   \{  \}                                          前置单个字符重现的正则表达式

无符号(no symbol)                    连续

^  $                                               锚点(Anchors)


ERE运算符优先级

[..]  [==]  [::]                                        用于字符排序的方括号表达式

\metacharacter                               转义的mera字符

[]                                                         方括号表达式

( )                                                      分组

*  +  ?  {}                                           重复前置的表达式

无符号(no symbol)                        连续

^  $                                                   锚点(Anchors)

|                                                        交替(Alternation)



正则表达式的扩展

很多程序提供正则表达式语法扩展。这类扩展大多采用取反斜杠加一个字符,以形成新的运算法。最常见的扩展为\<和\>运算法。表示匹配单词的开头和结尾。对用正则表达式的扩展,请查看手册页。

额外的GNU正则表达式运算符

运算法

含义

\w

匹配任何单词组成字符,等同于[[:alnum:]_]

\W

匹配任何单词组成字符,等同于[^[:alnum:]_]

\<   \>

如前所述

\b

匹配单词的起始或结尾处所找到的空字符串。这是\<与\>的结合。主要以awk使用\b表示后退字符,因此GNU awk(gawk)使用\y表示此功能。

\B

匹配两个单词组成字符之间的空字符串

\’  \`

分别匹配emacs缓冲区的开始和结尾。GNU程序(还有emacs)通常将它们视为与^及$同义



POSIX表示NUL无需匹配,但GNU程序则没有限制。如NUL字符出现在输入数据里,则可以通过.字符或方括号表达式来匹配。

【网络安全】浅谈数据库攻击复现及相关安全优化 4、准备数据库服务器为了安全正式环境应该把数据库单独放一台服务器,只允许让应用服务器 IP 来访问数据库服务器,通过独立两者,就算其中一台发生问题,另一台也是好的,进一步降低了危险性。5、定时备份数据库开发定时备份功能,可以使用 Crontab,或者其他框架,设定周期备份数据,哪怕是数据丢失或被删除也可以快速恢复。 阅读详情

相关推荐

大模型训练中的AllReduce:从原理到实战,如何优化你的分布式训练效率

本文深入解析了大模型分布式训练的核心通信操作AllReduce,特别是高效的Ring All-Reduce算法原理。文章从实战角度出发,探讨了如何通过通信计算重叠、梯度累积策略、NCCL库调优以及混合并行通信优化等手段,有效降低通信开销,从而显著提升大模型训练效率。

julia4scientist的博客 524

Linux之正则表达式---grep、元字符、任意字符、锚、中括号、否定、POSIX字符类

正则表达式是一个非常重要的用于文本操作的工具。 0.参考文献 《Linux命令行大全》 [美] William E. Shotts. Jr 著 郭光伟 郝记生 译, 人民邮电出版社 更多有用的Linux知识详解,可参加博主的Linux学习导航页 1.什么是正则表达式 正则表达式是一种符号表示法,用于识别文本模式。在某种程度上,它们类似于匹配文件和路径名使用的shell通配符。 许多命令行工具和大多数编程语言都支持正则表达式,以此来解决文本操作方面的问题。但不同的编程语言之间,正则表达式会略有不同。 方便

mathlxj的博客 7066

Canoe CAPL TCP通信避坑指南:从OnTcpConnect回调不触发到Socket句柄管理

本文详细解析了Canoe CAPL中TCP通信的常见问题与解决方案,包括OnTcpConnect回调不触发的三大原因、Socket句柄管理的内存泄漏风险、数据发送截断规则等。通过实战案例和代码示例,帮助开发者规避TCP通信中的典型陷阱,提升车载网络测试的稳定性和可靠性。

weixin_26976635的博客 358

Shell(12)正则表达式

正则表达式,又称规则表达式。(英语RegularExpression),在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通被用来检索、替换那些符合某个模式(规则)的文本。正则表达式不只有一种,而且LINUX中不同的程序可能会使用不同的正则表达式,如工具LINUX中常用的有两种正则表达式引擎基础正则表达式BRE扩展正则表达式ERE。...

tu464932199的博客 319

Unity UI Toolkit避坑指南:从官方Samples到实际项目,这些‘坑’我帮你踩过了

本文分享了Unity UI Toolkit在实际项目中的避坑经验和优化技巧,包括动画系统的高效替代方案、3D世界UI的创新实现方式、USS样式继承的反直觉规则等。通过详细的代码示例和性能优化策略,帮助开发者避免常见陷阱,提升开发效率。

weixin_29535577的博客 343

使用 Simulink 进行电力电子系统的效率优化仿真

电力电子系统(Power Electronics System)是现代电力系统和工业自动化中的关键组成部分,广泛应用于可再生能源发电、电动汽车、不间断电源(UPS)、电机驱动等领域。为了提高系统的整体性能和经济性,必须对电力电子系统的效率进行优化。效率优化的目标是最大化系统的能量转换效率,减少损耗,从而提高系统的可靠性和经济效益。Simulink 提供了一个强大的仿真环境,可以用来设计、分析和验证电力电子系统的效率优化策略。本教程将详细介绍如何使用 Simulink 进行电力电子系统的效率优化仿真。

xiaoheshang_123的博客 355

MySql模糊匹配

mysql

wade1010的专栏 2618

16、保障Azure应用安全:密钥管理与身份认证

本文深入探讨了保障Azure应用安全的关键措施,包括使用网络安全工具(如Application Gateway和Azure Front Door)防范攻击,解决传统密钥和机密存储方式的安全隐患,以及通过Azure Key Vault实现敏感信息的安全管理。同时,介绍了使用托管标识实现Azure资源间安全访问的方法,并结合实际操作步骤展示了如何配置Key Vault、设置访问策略、存储机密以及授予Web应用对SQL Server的访问权限。最后,对不同安全措施进行了比较,并提出了在开发、测试及生产环境中的综合

rock5的博客 72

bre与ere的区别_Linux正则表达式特性详解及BRE与ERE的异同点

Linux正则表达式(Regular Expression)主要遵从POSIX BRE或者POSIX ERE标准。什么是POSIX呢,POSIX Portable Operating System Interface 可移植操作系统接口ERE是BRE的扩展版本,具体更强的处理能力,并增加了一些元字符(metacharactor)。BRE主要的能力集有:1) 普通字符(Literal text),如...

weixin_42347522的博客 352

2026终极反反爬:Canvas/WebGL/字体指纹全维度伪装,应对浏览器检测实战指南

本文分享了2026年浏览器指纹检测现状及全维度伪装方案。当前反爬系统采用多维度联合指纹检测,重点针对硬件级(WebGL、Canvas)、系统级(字体、CPU)和行为级(鼠标移动)指纹。作者设计了一个独立的指纹伪装引擎,包含真实设备指纹库、指纹生成器和统一注入层,通过JS沙箱隔离实现伪装。核心方案包括:Canvas指纹通过真实设备渲染差异添加微偏移;WebGL指纹完整劫持上下文返回真实显卡参数;字体指纹劫持measureText方法模拟不同系统字体宽度。该方案实测可连续运行一个月零封号,解决了传统方法易被检测

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 924

搞定ESD(五):静电放电问题分析与调试

前面深入分析了静电放电的干扰机理、耦合路径,从现在开始将进入下一个大家非常关注的环节:静电放电问题分析与调试,掌握静电放电问题的分析方法,快速锁定敏感设备或者耦合路径,可以达到事半功倍的效果。

记得诚 2794

POSIX 正则表达式 BRE 与 ERE的区别

<br />传统上,POSIX 定义了两种正则表达式语法, 即:基本正则表达式(BRE)和扩展正则表 达式(ERE)。大多数LINUX程序至少要符合BRE规范。linux中,不同的程序支持的REGXP也不同,如sed只支持BRE的大部分,这主要是收到速度的限制。sed编辑器要尽可能快的处理数据流中的文本。而grep可以支持ERE,不过要使用-E 选项。gawk使用BRE引擎。 其中, BRE 定义的语法符号包括: . - 匹配任意一个字符。 [] - 字符集匹配,匹配方括号中定义的字符集之一。 [^] -

小庄往左走 1万+

livox雷达斜装修改

指的是,使用外部的陀螺仪的话,雷达到外部陀螺仪的转换,而mid360的陀螺仪是内置在360里面的,且方向和点云方向是一致的,所以不能通过修改此处去改变陀螺仪方向。同时livox_ros_driver2中的MID360_config.json里面的。这里面的外参,只能改变点云相对陀螺仪的位姿,而不能将陀螺仪映射到你期望的倾斜角度。fast_lio中的mid360.yaml中的外参。

z1872385的博客 2709

基本正则表达式与扩展正则表达式

基本正则表达式与扩展正则表达式基本正则表达式(BRE)和扩展正则表达式(ERE)的区别仅仅是元字符(meta charactor)的区别而已。(对,就是这么简单)BRE:只有^$.[]* 是元字符ERE:^$.[]+(){}?|都是元字符ERE中新加的字符在BRE里只是普通的字符,如+ 只能匹配字符加号。如果像在BRE里使用特殊含义,需要转义。示例:$echo "abcdefg" | grep 'a

Focus 2013

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

正则表达式说明

简介 大体来讲,正则表达式的文法分为3种标准:BRE、ERE 和 ARE。其中 BER 和 ERE 属于 POSIX 标准,ARE 则是由各家定义的扩展。   POSIX 正则表达式 传统上,POSIX 定义了两种正则表达式语法, 即:基本正则表达式(BRE)和扩展正则表 达式(ERE)。 其中, BRE 定义的语法

wyh0318的专栏 535

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

POSIX正则表达式

<br />正则表达式(regular expression)是一种表示方式,在许多地方均有对此的支持,如命令grep、语言Python、工具vim等。但是这里仅讨论POSIX正则表达式,显然它与其他正则表达式(如传统的Unix正则表达式)存在稍许的差异。POSIX正则表达式分为:BRE(Basic Regular Expression)和ERE(Extended Regular Expressions)。以下是有关POSIX正则表达式的元字符(meta)的说明:<br /><br />/<br />用于关

My_Notebook 1万+

正则表达式之BRE与ERE字符集

(一)BRE——Basic Register Express 基本的正则表达式(1)字符集: (2)Meta字符: (3)方括号表达式:(4)后向引用:匹配于正则表达式匹配的先前的部分。 第一步将子表达式包围在(与)里; 第二部使用\digit,匹配于第n个先前方括号内子表达式匹配成功的字符。(5)区间表达式:n与m的值在0至RE_DUP_MAX之间,RE_DUP_MAX最小为25

继学先生 1625

Linux正则表达式多个条件并,linux 正则表达式深度解析

简介大体来讲,正则表达式的文法分为3种标准:BRE、ERE 和 ARE。其中 BER 和 ERE 属于 POSIX 标准,ARE 则是由各家定义的扩展。POSIX 正则表达式传统上,POSIX 定义了两种正则表达式语法, 即:基本正则表达式(BRE)和扩展正则表达式(ERE)。其中, BRE 定义的语法符号包括:. - 匹配任意一个字符。[] - 字符集匹配,匹配方括号中定义的字符集之一。[^] ...

weixin_29454029的博客 1355

【字符串处理Python实现】字符串模式匹配之暴力、BM算法简介与实现

字符串模式匹配之暴力、BM算法简介与实现

weixin_37780776的博客 2151

LINUX中ERE类型,LINUX正则表达式特性及BRE与ERE的区别

LINUX正则表达式(Regular Expression)主要听从POSIX BRE或者POSIX ERE标准。什么是POSIX呢,POSIXPortable Operating System Interface 可移植操做系统接口ERE是BRE的扩展版本,具体更强的处理能力,并增长了一些元字符(metacharactor)。gitBRE主要的能力集有:正则表达式1) 普通字符(Literal ...

weixin_35703557的博客 278

Linux命令中的正规表达式元字符大解析

本文主要介绍了在Linux命令中使用到正则表达式时需要理解和识别的3种元字符集,进而能够更熟练更准确地使用对应的Linux命令。

hyman.lu 2004

Go分布式爬虫学习笔记(十二)

例如,微软办公软件 Words 在 2007 之后的版本的底层数据就是通过 XML 文件描述的。我们前面在 XPath 例子的中使用的 div[@class=“news_li”],在 CSS 选择器中可以简单地表示为 div.news_li。这是一种更加简单的表示方法。在 CSS 文件中,我们可以定义一个或多个 HTML 中的标签的路径,并指定这些标签的样式。在类似如下的日志文件中,包含了很多订单号的信息,即 order_id 后面的一串数字。在 Go 语言中,字符串是默认通过 UTF-8 的形式编码的。

成长之路 1013

正则表达式 流派(flavor)及差异简介

在使用正则表达式的过程中,大家可能会注意到不同的工具里边正则表达式的语法貌似有些不一样,不同的语言支持的正则表达式语法也会有一些不同,其实出现这些情况的根本原因就是存在几大流派,它们之间存在一些差别。 一、流派介绍 正则表达式简单来说有三大流派:PCRE、BRE、ERE PCRE(Perl Compatible Regular Expression):可以说是正则表达式的老前辈,它是从Per

Kerwin's Blog 2365

UNIX/Linux 系统实现限制

1. 操作系统实现限制标准定义了操作系统在实现时的限制 规定某些最大值最小(至少)是多少,实际实现中可以更大,严格符合此标准的应用则应小于这个最小值 规定某些最小值最大(最多)是多少,实际实现中可以更小,严格符合此标准的应用则应大于这个最大值 即实际的实现范围应比标准规定的范围更广,这样可以满足更大的需求 即严格符合标准的应用应在标准规定的范围内,这样比较具有可移植性 标准定义的限制值往往加了 _P

王慧勇 1276

POSIX中的正则表达式

POSIX标准的正则表达式API由操作系统中的C标准库实现。在Linux系统中,有GNU C Library实现。 应用程序通过调用库函数实现正则表达式操作,无需与内核交互。

m0_72938142的博客 2284

【Linux】正则表达式

正则表达式是一种可供Linux工具过滤文本的自定义模板,Linux工具(如sed、gawk)会在读取数据时使用正则表达式对数据进行模式匹配。 正则表达式使用元字符来描述数据流中的一个或多个字符。它是由正则表达式引擎实现的。正则表达式引擎是一种底层软件,负责解释正则表达式并用这些模式进行文本匹配。

lemon9597的博客 1035
上一篇: C语言使用正则表达式
下一篇: 轻松记住大端小端的含义(附对大端和小端的解释)
ly0303521
博客等级 码龄17年 135粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值