`

PECR

    博客分类:
  • php
 
阅读更多
经常使用的分隔符是正斜线(/), hash符号(#) 以及取反符号(~). 下面的例子都是使用合法分隔符的模式.
/foo bar/ #^[^0-9]$# +php+ %[a-zA-Z0-9_-]%
\a
响铃字符(十六进制07)
\cx
"control-x", x是任意字符
\e
转义 (十六进制 1B)
\f
换页 (十六进制 0C)
\n
换行 (十六进制 0A)
\p{xx}
一个符合xx属性的字符, 详细查看unicode properties 属性
\P{xx}
一个不符合xx属性的字符, 详细查看unicode properties 属性
\r
回车 (十六进制 0D)
\t
水平制表符 (十六进制 09)
\xhh
hh十六进制编码的字符, 详细查看unicode properties 属性
\ddd
ddd八进制编码的字符, 或者后向引用
\cx的确切效果如下: 如果x是一个小写字母, 它被转换为大写. 接着, 将字符的第6位(十六进制 40, 右数第一个位为第0位)取反. 比如\cz成为十六进制的1A, \c{成为十六进制3B, \c;成为十六进制7B.
在”\x”后面,读取两个十六进制数(字母可以是大写或小写). 在UTF-8模式, “\x{…}”允许使用, 花括号内的内容是十六进制有效数字. 它将给出的十六进制数字解释为UTF-8字符代码. 原来的十六进制转义序列, \xhh, 匹配一个双字节的UTF-8字符, 如果它的值大于127
在”\0”之后, 读取两个八进制数. 所有情况下, 如果数少于2个, 则直接使用. 序列”\0\x\07”指定了两个二进制0紧跟着一个BEL字符. 请确保初始的0之后的两个数字是合法的八进制数.
处理一个反斜线紧跟着的不是0的数字的情况比较复杂. 在字符类外部, PCRE读取它并以十进制读取紧随其后的数字. 如果数值小于10, 或者之前捕获到了该数字能够代表的左括号(子组), 整个数字序列被认为是后向引用.后向引用如何工作在后面描述, 接下来就会讨论括号子组.
在一个字符类里面, 或者十进制数大于9并且没有那么多的子组被捕获, PCRE重新读取反斜线后的第三个8进制数字, 并且从最低的8位生成单字节值. 任何的后续数字都代表它们自身. 例如:
\040
空格的另外一种用法
\40
当提供了少于40个子组时也认为是空格.
\7
始终是后向引用
\11
可能是后向引用, 也可能是制表符
\011
总是一个制表符
\0113
一个制表符紧跟着一个3(因为每次最多只读取3个8进制位
\113
八进制113代表的字符
\377
8进制377是10进制255, 因此代表一个全1的字符
\81
一个后向引用或者一个二进制0紧跟着两个数字8和1(因为8不是8进制有效数字)
注意, 八进制值的100或者更大的值必须没有前置的0引导, 因为每次最多读取3个8进制位.
所有序列定义的单字节值都可以在字符类内部或外部使用. 另外, 在字符类中, 序列”\b”解释为退格字符. 字符类外它又有不同的意义(下面有描述)
反斜线的第三种用法是用来描述特定的字符类:
\d
任意十进制数字
\D
任意非十进制数字
\h
任意水平空白字符(since PHP 5.2.4)
\H
任意非水平空白字符(since PHP 5.2.4)
\s
任意空白字符
\S
任意非空白字符
\v
任意垂直空白字符(since PHP 5.2.4)
\V
任意非垂直空白字符(since PHP 5.2.4)
\w
任意单词字符 (相当于[a-zA-Z0-9_])
\W
任意非单词字符
上面每一对转义序列都代表了完整字符集中两个不相交的部分, 任意字符一定会匹配其中一个, 同时一定不会匹配另外一个.
单词字符指的是任意字母, 数字, 下划线. 也就是说任意可以组成perl单词的字符. 字母和数字的定义通过PCRE字符表控制, 可以通过指定地域设置使其匹配改变. 比如, 在法国(fr)地域设置中, 一些超过128的字符代码被用于重音字母, 它们可以实用\w匹配.
这些字符类序列在字符类内部或外部都可以出现. 他们每次匹配所代表的字符类型中的一个字符. 如果当前匹配点位于目标字符串末尾, 它们中的所有字符都匹配失败, 因为没有字符让它们匹配了.
反斜线的第四种用法是一些简单的断言. 一个断言指定一个必须在特定位置匹配的条件, 它们不会从目标字符串中消耗任何字符. 接下来我们会讨论使用子组的更加复杂的断言. 反斜线断言包括:
\b
单词边界
\B
非单词边界
\A
目标的开始位置(独立于多行模式)
\Z
目标的结束位置或结束处的换行符(独立于多行模式)
\z
目标的结束位置(独立于多行模式)
\G
在目标中首次匹配位置
2:元字符
\
一般用于转义字符
^
断言目标的开始位置(或在多行模式下是行首)
$
断言目标的结束位置(或在多行模式下是行尾)
.
匹配除换行符外的任何字符(默认)
[
开始字符类定义
]
结束字符类定义
|
开始一个可选分支
(
子组的开始标记
)
子组的结束标记
?
作为量词, 表示0次或1次匹配. 位于量词后面用于改变量词的贪婪特性. (查阅量词)
*
量词, 0次或多次匹配
+
量词, 1次或多次匹配
{
自定义量词开始标记
}
自定义量词结束标记
模式中方括号内的部分称为"字符类". 在一个字符类中仅有以下可用元字符:
\
转义字符
^
仅在作为第一个字符(方括号内)时, 表明字符类取反
-
标记字符范围
]
字符类结束符
3:模式修饰符
i (PCRE_CASELESS)
如果设置了这个修饰符, 模式中的字母会进行大小写不敏感匹配.
m (PCRE_MULTILINE)
默认情况下, PCRE认为目标字符串是由单行字符组成的(然而实际上它可能会包含多行), "行首"元字符(^)仅匹配字符串的开始位置, 而"行末"元字符($)仅匹配字符串末尾, 或者最后的换行符(除非设置了D修饰符). 这个行为和perl相同. 当这个修饰符设置之后, "行首"和"行末"就会匹配目标字符串中任意换行符之前或之后, 另外, 还分别匹配目标字符串的最开始和最末尾位置. 这等同于perl的/m修饰符. 如果目标字符串 中没有"\n"字符, 或者模式中没有出现^或$, 设置这个修饰符不产生任何影响.
s (PCRE_DOTALL)
如果设置了这个修饰符, 模式中的点号元字符匹配所有字符, 包含换行符. 如果没有这个 修饰符, 点号不匹配换行符. 这个修饰符等同于perl中的/s修饰符. 一个取反字符类比如 [^a]总是匹配换行符, 而不依赖于这个修饰符的设置.
x (PCRE_EXTENDED)
如果设置了这个修饰符, 模式中的没有经过转义的或不在字符类中的空白数据字符总会被忽略, 并且位于一个未转义的字符类外部的#字符和下一个换行符之间的字符也被忽略. 这个修饰符 等同于perl中的/x修饰符, 使被编译模式中可以包含注释. 注意: 这仅用于数据字符. 空白字符 还是不能在模式的特殊字符序列中出现, 比如序列(?(引入了一个条件子组(译注: 这种语法定义的 特殊字符序列中如果出现空白字符会导致编译错误. 比如( ?(就会导致错误.).
e (PREG_REPLACE_EVAL)
如果这个修饰符设置了, preg_replace()在进行了对替换字符串的 后向引用替换之后, 将替换后的字符串作为php代码评估执行(eval函数方式), 并使用执行结果 作为实际参与替换的字符串. 单引号, 双引号, 反斜线(\)和NULL字符在 后向引用替换时会被用反斜线转义.
分享到:
评论

相关推荐

    STM32F1设置FLASH的读写保护与解除

    1. **访问FLASH控制寄存器**:STM32F1的FLASH控制接口包含多个寄存器,如AESSR(Advanced Encryption Standard Status Register)、ACR(Advanced Control Register)以及PECR(Program/erase Control Register)。...

    STM32L0x3中文手册.pdf

    为了方便开发者理解,手册中还详细说明了与Flash相关的寄存器,如访问控制寄存器(FLASH_ACR)、编程和擦除控制寄存器(FLASH_PECR)、掉电密钥寄存器(FLASH_PDKEYR)、PECR解锁密钥寄存器(FLASH_PEKEYR)、编程和擦除密钥...

    flash_stm32_

    STM32F10X的Flash编程是通过专用的Flash编程和验证寄存器(FPAR, FMDR, FSMR, FCR)以及编程和擦除控制器(PECR)进行的。 在`stm32f10x_flash.h`头文件中,会定义与Flash操作相关的常量、宏定义和函数原型。这些...

    STM32L0中文参考手册

    具体到Flash寄存器的详细说明,手册列举了多种与Flash操作相关的寄存器,例如访问控制寄存器(FLASH_ACR)、编程和擦除控制寄存器(FLASH_PECR)、掉电密钥寄存器(FLASH_PDKEYR)、PECR解锁密钥寄存器(FLASH_PEKEYR)、...

    DM00095744_Ultra-low-power STM32L0x3参考手粗

    - **Program and Erase Control Register (FLASH_PECR)**:控制写入和擦除操作的过程。 - **Power-down Key Register (FLASH_PDKEYR)**:用于管理闪存的电源状态。 - **PECR Unlock Key Register**:提供解锁功能,...

    STM32L0x0 参考手册-en

    对Flash寄存器集中的各项寄存器进行了详细描述,包括访问控制寄存器(FLASH_ACR)、程序和擦除控制寄存器(FLASH_PECR)、上电保护寄存器(FLASH_PDKEYR)和选项字节解锁寄存器(FLASH_PEKEYR)等。 8. 存储器接口...

    STM32F401 I2C PEC packet error checking

    2. 在发送数据之前,需要清零PEC寄存器(如`I2C->PECR`)。 3. 在发送每个字节后,更新CRC值。这通常涉及读取`I2C->SR1`寄存器的PEC位,然后将该值与下一个要发送的字节进行异或操作。 4. 在接收数据时,需要读取`I2...

    STM32L0x中文参考手册.pdf

    所有这些操作都通过特定的寄存器来控制和访问,这些寄存器包括但不限于访问控制寄存器(FLASH_ACR)、编程和擦除控制寄存器(FLASH_PECR)和状态寄存器(FLASH_SR)等。这些寄存器允许开发人员对Flash存储器进行精细控制,...

    IIC实验-寄存器_IIC_STM32F103_

    1. **I2C的时钟控制寄存器 (I2C_RCC)**:配置I2C的时钟源和分频因子,确保IIC工作在合适的速率,例如I2C_CCR和I2C_PECR。 2. **I2C控制寄存器1 (I2C_CR1)**:包含启动、停止、重启动、应答禁止等功能控制位。 3. *...

    基于超低功耗 STM32L0x3 高级 ARM®的32 位 MCU

    参考手册中提及的各个寄存器,如FLASH_ACR、FLASH_PECR、FLASH_SR等,都是微控制器内部功能的控制点,需要开发者仔细阅读和理解这些寄存器的功能、位域以及如何正确配置它们来达到预期的控制效果。同样,了解如何...

    SMT32内部flash读写操作,从此告别外部flash,eeprom

    因为SMT32内部flash有512K,这么大的空间用来存程序的只有前面的一小段,平时我们跑裸机程序根本不可能用到这么多空间,何必不利用起来,节约外设的电子元器件呢,本例子通过解锁SMT32内部FLASH,来存储我们的数据

    STM32L0x3的中文参考手册

    这些寄存器包括但不限于编程和擦除控制寄存器(FLASH_PECR)、掉电密钥寄存器(FLASH_PDKEYR)、选项字节解锁密钥寄存器(FLASH_OPTKEYR)、状态寄存器(FLASH_SR)、写保护寄存器(FLASH_WRPROT1和FLASH_WRPROT2)...

    I2C_Master.zip_The Family_i2c_stm8s

    funny the I2C_PECR is documented in STM8S103F3 specification while the Packet Error Checking is not part of the S family

    Privacy-Statements

    "Privacy-Statements"这个项目显然关注的是如何为组织创建符合欧洲电子通信隐私法规(PECR,即Privacy and Electronic Communications Regulations)以及全球数据保护法规(GDPR,即General Data Protection ...

    Plausible Analytics是Google Analytics(分析)的一种简单,轻量级(<1 KB),开源且对隐私友好的替代方案-Linux开发

    它不使用cookie,并且完全符合GDPR,CCPA和PECR。 您可以自行托管Plausible或让我们在云中为您运行它。 这是我们自己的网站统计信息的实时演示。 在欧盟内制作和托管:European_Union:合理的分析合理的分析是Google ...

    django-cookie-law:通过显示cookie信息横幅直到用户将其关闭,帮助您的Django项目符合EU cookie法规。

    警告已知此应用不是英国PECR / GDPR的投诉。 您有责任查明django-cookie-law是否符合特定的当地法律要求。 欢迎使用Github进行贡献和发表评论,网址为: : 请注意,django-cookie-law要求: 的Django> = 1.8 django...

    分析:可替代Google Analytics(分析)的简单,开源,轻量级(<1 KB)和隐私友好型网络分析

    它不使用cookie,并且完全符合GDPR,CCPA和PECR。 您可以自行托管Plausible或让我们在云中为您运行它。 这。 在欧盟制造和托管 :European_Union: 我们致力于使Web分析更加隐私友好。 我们的使命是通过提供非AdTech...

    光伏电池片行业报告:N型电池片将成为趋势,异质结有望成为行业新星

    PECR 技术是在传统铝背场电池(在硅片背部制备铝膜,形成铝背场,减少少数载流子的复合速度同时充当金 属电极)的基础上,在硅片背面和背铝中间再加入一层电介质钝化层,同时通过在钝化层上激光刻蚀来实现 背铝与...

    nullitics:极简的开源Web分析

    符合GDPR,ePrivacy,PECR,CCPA和COPPA。 快速(可以在我不起眼的个人服务器上处理35K req / sec)。 绕过广告拦截器。 可以用作独立服务或Go库。 您拥有自己的数据。如何使用它? Nullitics有以下几种口味: ...

    fathom:Fathom Lite。 简单,以隐私为中心的网站分析。 使用Golang和Preact构建

    Fathom Lite-简单的网站分析 是Google Analytics()的一种更简单,更注重隐私的替代方案。 在Internet上收集信息很重要,但是... 目前,Fathom Analytics Lite不使用PECR,因为它使用了一个匿名cookie。 我们的符合PE

Global site tag (gtag.js) - Google Analytics