Amazon Best VPN GoSearch

OnWorks 网站图标

pcre2test - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 pcre2test

这是 pcre2test 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


pcre2test - 一个测试 Perl 兼容正则表达式的程序。

概要



pcre2测试 [选项] [输入 文件 [输出 文件]]

pcre2测试 是 PCRE2 正则表达式库的测试程序,但它也可以是
用于试验正则表达式。 本文档描述了
测试程序; 有关正则表达式本身的详细信息,请参阅 pcre2模式
文档。 有关 PCRE2 库函数调用及其选项的详细信息,请参阅
PCRE2API 文档。

输入为 pcre2测试 是正则表达式模式和主题字符串的序列
要匹配。 还有用于设置默认值和控制一些的命令行
特别行动。 输出显示每次匹配尝试的结果。 外部修饰符
或内部命令行、模式和主题行指定 PCRE2 功能
选项,控制主题的处理方式以及产生的输出。

随着最初相当简单的 PCRE 库的发展,它获得了许多不同的功能,
结果,原来的 最具体的 程序最终以一堆乱七八糟的选项结束,
神秘的语法,用于测试所有功能。 迁移到新的 PCRE2 API 提供了一个
重新实施测试程序的机会 pcre2测试,使用更简洁的修饰符语法。
尽管如此,仍然有许多晦涩的修饰符,其中一些是专门针对
设计用于与分发的测试脚本和数据文件结合使用
作为 PCRE2 的一部分。 所有的修饰符都记录在这里,有些没有太多理由,
但其中许多不太可能有用,除非在测试库时。

PCRE2 8位, 16位 AND 32位 图书馆



可以构建不同版本的 PCRE2 库来支持以下字符串:
以 8 位、16 位或 32 位代码单元编码。 这些库中的一个、两个或所有三个
可以同时安装。 这 pcre2测试 程序可用于测试所有
图书馆。 但是,它自己的输入和输出始终是 8 位格式。 当测试
16 位或 32 位库、模式和主题字符串转换为 16 位或 32 位
在传递给库函数之前格式化。 结果被转换回 8 位
输出的代码单元。

在本文档的其余部分,库函数和结构的名称在
通用形式,例如, PCRE_编译(). 库中使用的实际名称具有
根据需要添加后缀 _8、_16 或 _32。

INPUT 编码



输入到 pcre2测试 逐行处理,或者通过调用 C 库的 fgets()
功能,或通过 在线阅读 图书馆(见下文)。 使用使用处理输入
C 的字符串函数,所以不能包含二进制零,即使在类 Unix 中
环境, fgets() 将除换行符以外的任何字节视为数据字符。 在一些
Windows 环境字符 26(十六进制 1A)导致文件立即结束,并且不再
数据被读取。

因此,为了获得最大的可移植性,最安全的做法是避免在
pcre2测试 输入文件。 有一种工具可以将模式的字符指定为
十六进制对,因此可以在模式中包含二进制零
测试目的。 处理主题行以进行反斜杠转义,这使得它
可以包含任何数据值。

指挥 LINE 配置



-8 如果已构建 8 位库,则此选项会导致使用它(这是
默认)。 如果尚未构建 8 位库,则此选项会导致
错误。

-16 如果已构建 16 位库,则此选项会导致使用它。 要是
16 位库已经构建,这是默认的。 如果 16 位库
尚未构建,此选项会导致错误。

-32 如果已构建 32 位库,则此选项会导致使用它。 要是
32 位库已经构建,这是默认的。 如果 32 位库
尚未构建,此选项会导致错误。

-b 表现得好像每个模式都有 /fullbincode 修饰符; 完整的内部
编译后输出模式的二进制形式。

-C 输出 PCRE2 库的版本号,以及所有可用信息
关于包含的可选功能,然后以零退出退出
代码。 所有其他选项都将被忽略。

-C 选项 输出有关特定构建时选项的信息,然后退出。 这个
功能旨在用于脚本,例如 运行测试。 下列
options 输出值并按指示设置退出代码:

ebcdic-nl EBCDIC 环境中 LF (= NL) 的代码:
0x15或0x25
0 如果在 ASCII 环境中使用
退出代码始终为 0
linksize 配置的内部链接大小(2、3 或 4)
退出代码设置为链接大小
newline 默认换行设置:
CR、LF、CRLF、ANYCRLF 或任何
退出代码始终为 0
bsr 是什么 \R 匹配的默认设置:
ANYCRLF 或 ANY
退出代码始终为 0

以下选项输出 1 为真或 0 为假,并将退出代码设置为
相同的值:

支持反斜杠-C \C(未锁定)
为 EBCDIC 环境编译的 ebcdic
提供 jit 即时支持
pcre2-16 构建了 16 位库
pcre2-32 构建了 32 位库
pcre2-8 构建了 8 位库
unicode Unicode 支持可用

如果给出未知选项,则输出错误消息; 退出代码为 0。

-d 表现得好像每个模式都有 调试 修饰符; 内部形式和
编译后输出编译模式信息; -d is
相当于 -b -i.

-dfa 表现得好像每个主题行都有 DFA 修饰符; 匹配是使用
PCRE2_dfa_match() 函数而不是默认值 PCRE2_匹配().

-救命 输出这些选项的简要总结然后退出。

-i 表现得好像每个模式都有 / info 修饰符; 有关编译的信息
编译后给出模式。

-jit 表现得好像每条图案线都有 准时 修饰符; 成功后
编译时,每个模式都会传递给实时编译器(如果可用)。

-模式 修饰符列表
表现得好像每个模式行都包含给定的修饰符。

-q 不输出版本号 pcre2测试 在执行开始时。

-S 尺寸 在类 Unix 系统上,将运行时堆栈的大小设置为 尺寸 兆字节。

-主题 修饰符列表
表现得好像每个主题行都包含给定的修饰符。

-t 使用定时器运行每个编译和匹配多次,并输出结果
每次编译或匹配的次数。 使用 JIT 时,会分别给出
初始编译和 JIT 编译。 您可以控制迭代次数
通过以下方式用于计时 -t 带有一个数字(作为一个单独的项目
命令行)。 例如,“-t 1000”迭代 1000 次。 默认为
迭代 500,000 次。

-Tm值 就像 -t 除了它只计算匹配阶段,而不是编译
相。

-T -TM值 这些行为就像 -t-Tm值,但此外,在运行结束时,总
输出所有编译和匹配的时间。

-版 输出 PCRE2 版本号,然后退出。

商品描述



If pcre2测试 给出两个文件名参数,它从第一个读取并写入
第二。 如果名字是“-”,则输入取自标准输入。 如果 pcre2测试 is
仅给定一个参数,它从该文件读取并写入标准输出。 否则,它读
从标准输入并写入标准输出。

在规划婴儿食品行业的工艺要求时,安全性和可靠性是工艺设计中最重要的方面。 pcre2测试 构建后,配置选项可以指定它应该与
这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 在线阅读 or 编辑器 图书馆。 完成后,如果输入来自终端,它
使用 阅读线() 功能。 这提供了行编辑和历史记录功能。
从输出 -救命 选项说明是否 阅读线() 将被使用。

该程序处理任意数量的测试,每个测试由一组输入行组成。
每个集合以一个正则表达式模式开始,后跟任意数量的主题行
与该模式匹配。 在测试数据集之间,开始的命令行
可能会出现带#。 这种文件格式,有一些限制,也可以由
测试文件 与 PCRE2 一起分发的脚本,作为检查
PCRE2 和 Perl 的行为是相同的。

当输入为终端时, pcre2测试 每行输入提示,使用“re>”
提示输入正则表达式模式,“data>”提示输入主题行。 命令
以# 开头的行只能在响应“re>”提示时输入。

每个主题行都单独且独立地匹配。 如果你想做多行
匹配,您必须使用 \n 转义序列(或 \r 或 \r\n 等,具体取决于
换行设置)在单行输入中对换行序列进行编码。 没有
限制主题行的长度; 如果输入缓冲区是自动扩展的
太小。 有复制功能可以生成长
重复的模式或主题行,而不必明确提供它们。

空行或文件结尾表示测试主题行的结尾,在
如果仍有要读取的输入,则需要新的模式或命令行。

指挥 线数



在测试数据集之间,以# 开头的行被解释为命令行。
如果第一个字符后跟空格或感叹号,则该行是
被视为评论,并被忽略。 否则,将识别以下命令:

#禁止_utf

后续模式自动具有 PCRE2_NEVER_UTF 和 PCRE2_NEVER_UCP 选项
设置,锁定 PCRE2_UTF 和 PCRE2_UCP 选项的使用以及 (*UTF) 的使用
和 (*UCP) 在模式的开始。 如果后续的
模式包含任何出现的 \P、\p 或 \X,当
未设置 PCRE2_UTF,但需要将 Unicode 属性支持包含在
图书馆。

这是在测试文件中使用的触发器保护,以确保 UTF 或 Unicode 属性
测试不会意外添加到不支持 Unicode 时使用的文件中
包含在库中。 将 PCRE2_NEVER_UTF 和 PCRE2_NEVER_UCP 设置为默认值也可以
可以通过使用获得 #图案; 不同之处在于 #禁止_utf 不能取消设置,
并且自动选项不显示在模式信息中,以避免混乱
测试输出。

#加载

此命令用于从文件加载一组预编译模式,如
下面标题为“保存和恢复编译模式”的部分。

#newline_default [ ]

构建 PCRE2 时,可以指定默认的换行约定。 这决定了哪个
字符和/或字符对被识别为指示模式中的换行符或
主题字符串。 编译模式时可以覆盖默认值。 标准
测试文件包含各种换行约定的测试,但大多数测试
期望默认情况下将单个换行符识别为换行符。 无需特别操作
当使用 CR 或 CRLF 作为默认换行符编译 PCRE2 时,测试将失败。

#newline_default 命令指定可接受的换行符类型列表
默认。 类型必须是 CR、LF、CRLF、ANYCRLF 或 ANY(大写或小写)之一,
例如:

#newline_default LF 任何 anyCRLF

如果默认换行符在列表中,则此命令无效。 否则,除非当
测试 POSIX API,一个 新队 指定第一个换行符约定的修饰符
列表(上例中的 LF)被添加到任何还没有
新队 修饰符。 如果换行列表为空,则该功能被关闭。 这个命令是
存在于许多标准测试输入文件中。

测试 POSIX API 时,无法覆盖默认换行符
约定,尽管可以从模式中设置换行约定。 一种
警告,如果 POSIX 修饰符用于 #newline_default 将设置默认值
对于非 POSIX API。

#图案

此命令设置适用于所有后续模式的默认修饰符列表。
模式上的修饰符可以更改这些设置。

#perltest

此行的出现会导致检查所有后续修改器设置
与...的兼容性 测试文件 脚本,用于确认 Perl 给出
结果与 PCRE2 相同。 此外,除了注释行,其他命令行都不是
允许,因为它们和许多修饰符是特定于 pcre2测试,并且应该
不用于也由处理的测试文件 测试文件。 该 #perltest 命令
有助于检测意外放入错误文件的测试。

#流行音乐 [ ]

此命令用于操作已编译模式的堆栈,如
下面标题为“保存和恢复编译模式”的部分。

#节省

此命令用于将一组已编译的模式保存到文件中,如
下面标题为“保存和恢复编译模式”的部分。

#主题

此命令设置适用于所有后续主题行的默认修饰符列表。
主题行上的修饰符可以更改这些设置。

CHANGE 句法



修饰符列表与模式行和主题行一起使用。 列表中的项目是分开的
由逗号后跟可选的空格。 修饰符列表中的尾随空格是
忽略。 一些修饰符可能同时用于模式和主题行,而其他修饰符
仅对其中之一有效。 每个修饰符都有一个长名称,例如
“锚定”,其中一些必须后跟等号和值,例如,
“偏移= 12”。 值不能包含逗号字符,但可以包含空格。 修饰符
不取值的前面可能有一个减号来关闭以前的设置。

一些更常见的修饰符也可以指定为单个字母,例如
“我”代表“无壳”。 在文档中,遵循 Perl 约定,这些是编写的
为清楚起见,使用斜杠(“/i 修饰符”)。 缩写修饰符必须全部为
连接在修饰符列表的第一项中。 如果第一项未被识别为
一个长修饰符名称,它被解释为这些缩写的序列。 例如:

/abc/ig,换行=cr,jit=3

这是一个模式行,其修饰符列表以两个单字母修饰符(/i 和
/G)。 小写缩写修饰符与 Perl 中使用的相同。

模式 句法



模式行必须以下列字符之一开头(常用符号,不包括
模式元字符):

/ ! " ' ` - = _ : ; , % & @ ~

这被解释为模式的分隔符。 一个正则表达式可以继续
几个输入行,在这种情况下,换行符包含在其中。 这是
可以通过用反斜杠转义将分隔符包含在模式中,例如
例子

/ABC\/定义/

如果这样做,转义符和定界符就构成了模式的一部分,但由于
分隔符都是非字母数字的,这不影响其解释。 如果
终止分隔符后紧跟反斜杠,例如,

/abc/\

然后在模式的末尾添加一个反斜杠。 这样做是为了提供一种方式
测试模式以反斜杠结束时出现的错误条件,因为

/ABC\/

被解释为以“abc/”开头的模式的第一行,导致 pcre2test
将下一行读作正则表达式的延续。

模式后面可以跟一个修饰符列表(详细信息如下)。

分科 LINE 句法



在每个主题行传递给 PCRE2_匹配() or PCRE2_dfa_match(), 领先和
删除尾随空格,并扫描该行以查找反斜杠转义符。 这
以下提供了一种以可见方式对非打印字符进行编码的方法:

\a 警报 (BEL, \x07)
\b 退格 (\x08)
\e 转义 (\x27)
\f 换页 (\x0c)
\n 换行符 (\x0a)
\r 回车 (\x0d)
\t 标签 (\x09)
\v 垂直制表符 (\x0b)
\nnn 八进制字符(最多 3 个八进制数字); 总是
一个字节,除非在 UTF-255 或 8 位或 16 位模式下 > 32
\o{dd...} 八进制字符(任意数量的八进制数字}
\xhh 十六进制字节(最多 2 个十六进制数字)
\x{hh...} 十六进制字符(任意数量的十六进制数字)

\x{hh...} 的使用不依赖于 utf 图案上的修饰符。 这是
一直被认可。 大括号内可以有任意数量的十六进制数字;
无效值会引发错误消息。

注意\xhh 指定的是一个字节而不是UTF-8 模式下的一个字符; 这使它
可以构建无效的 UTF-8 序列以进行测试。 另一方面,
\x{hh} 在 UTF-8 模式下被解释为一个 UTF-8 字符,如果生成多于一个字节
该值大于 127。当测试非 UTF-8 模式的 8 位库时,\x{hh}
为小于 256 的值生成一个字节,并为更大的值导致错误。

在 UTF-16 模式下,所有 4 位 \x{hhhh} 值都被接受。 这使得有可能
为测试目的构建无效的 UTF-16 序列。

在 UTF-32 模式下,所有 4 到 8 位的 \x{...} 值都被接受。 这使得有可能
为测试目的构建无效的 UTF-32 序列。

有一个特殊的反斜杠序列指定一个或多个的复制
特点:

\[ ]{ }

这使得测试长字符串成为可能,而无需将它们作为测试的一部分提供。
文件。 例如:

\[abc]{4}

转换为“abcabcabcabc”。 此功能不支持嵌套。 包括一个
在字符中结束方括号,将其编码为 \x5D。

反斜杠后跟等号标记主题字符串的结束和开始
的修饰符列表。 例如:

abc\=notbol,notempty

如果主题字符串为空且 \= 后跟空格,则该行被视为
注释行,不用于匹配。 例如:

\= 这是一条评论。
abc\= 这是一个无效的修饰符列表。

反斜杠后跟任何其他非字母数字字符只是转义该字符。
反斜杠后跟任何其他内容会导致错误。 但是,如果最后一个字符
该行中有一个反斜杠(并且没有修饰符列表),它被忽略。 这给出了一个
将空行作为数据传递的方式,因为真正的空行会终止数据输入。

模式 修饰语



有多种类型的修饰符可以出现在图案线中。 除非另有说明
下面,它们也可以用于 #图案 命令。 模式的修饰符列表可以添加到或
覆盖先前设置的默认修饰符 #图案 命令。

设置 汇编 选项

以下修饰符设置选项 PCRE2_编译(). 最常见的有单
字母缩写。 看 PCRE2API 对它们的作用的描述。

allow_empty_class 设置 PCRE2_ALLOW_EMPTY_CLASS
alt_bsux 设置 PCRE2_ALT_BSUX
alt_circumflex 设置 PCRE2_ALT_CIRCUMFLEX
alt_verbnames 设置 PCRE2_ALT_VERBNAMES
锚定集 PCRE2_ANCHORED
auto_callout 设置 PCRE2_AUTO_CALLOUT
/i 无壳设置 PCRE2_CASELESS
Dollar_endonly 设置 PCRE2_DOLLAR_ENDONLY
/s dotall 设置 PCRE2_DOTALL
dupnames 设置 PCRE2_DUPNAMES
/x 扩展集 PCRE2_EXTENDED
一线组 PCRE2_FIRSTLINE
match_unset_backref 设置 PCRE2_MATCH_UNSET_BACKREF
/m 多行集 PCRE2_MULTILINE
never_backslash_c 设置 PCRE2_NEVER_BACKSLASH_C
never_ucp 设置 PCRE2_NEVER_UCP
never_utf 设置 PCRE2_NEVER_UTF
no_auto_capture 设置 PCRE2_NO_AUTO_CAPTURE
no_auto_possess 设置 PCRE2_NO_AUTO_POSSESS
no_dotstar_anchor 设置 PCRE2_NO_DOTSTAR_ANCHOR
no_start_optimize 设置 PCRE2_NO_START_OPTIMIZE
no_utf_check 设置 PCRE2_NO_UTF_CHECK
ucp 集 PCRE2_UCP
非贪婪集 PCRE2_UNGREEDY
use_offset_limit 设置 PCRE2_USE_OFFSET_LIMIT
utf 设置 PCRE2_UTF

除了打开 PCRE2_UTF 选项, utf 修饰符导致所有非打印
要使用 \x{hh...} 表示法打印的输出字符串中的字符。 否则,那些
小于 0x100 以十六进制输出,没有大括号。

设置 汇编 控制

以下修饰符会影响编译过程或请求有关
模式:

bsr=[anycrlf|unicode] 指定 \R 处理
/B bincode 显示没有长度的二进制代码
callout_info 显示标注信息
调试与信息相同,fullbincode
fullbincode 显示带长度的二进制代码
/I info 显示有关编译模式的信息
十六进制模式以十六进制编码
jit[= ] 使用 JIT
jitfast 使用 JIT 快速路径
jitverify 验证 JIT 使用
地区= 使用此语言环境
max_pattern_length= 设置最大模式长度
内存显示使用的内存
换行= 设置换行符类型
null_context 使用 NULL 上下文编译
parens_nest_limit= 设置最大括号深度
posix 使用 POSIX API
push 将编译后的模式推入堆栈
堆栈保护= 测试 stackguard 功能
table=[0|1|2] 选择内部表

这些修饰符的效果在以下部分中描述。

新队 \R 处理

- BSR 修饰符指定模式中的 \R 应该匹配的内容。 如果设置为“anycrlf”,
\R 仅匹配 CR、LF 或 CRLF。 如果设置为“unicode”,\R 匹配任何 Unicode 换行符
序列。 PCRE2构建时默认指定,默认默认为
Unicode。

- 新队 修饰符指定哪些字符将被解释为换行符,都在
模式和主题行。 类型必须是 CR、LF、CRLF、ANYCRLF 或 ANY 之一
(大写或小写)。

资讯 关于 a 模式

- 调试 修饰符是一个简写 信息,全码, 请求所有可用
信息。

- 二进制码 修饰符导致编译代码的表示在之后输出
汇编。 此信息不包含长度和偏移值,这确保
为不同的内部链接大小和不同的代码生成相同的输出
单位宽度。 通过使用 二进制码,相同的回归测试可以用于不同的
环境。

- 全码 相比之下,修饰符, 包括长度和偏移值。 这是用
在一些仅针对特定代码单元宽度和链接大小运行的特殊测试中,并且是
也可用于一次性测试。

- info 修饰符请求有关编译模式的信息(是否锚定,
有一个固定的第一个字符,依此类推)。 该信息是从
PCRE2_模式_信息() 功能。 下面是一些典型的例子:

re> /(?i)(^a|^b)/m,info
捕获子模式计数 = 1
编译选项:多行
整体选项:无壳多线
开头或换行符后的第一个代码单元
主题长度下限 = 1

重新> /(?i)abc/info
捕获子模式计数 = 0
编译选项:
整体选项:无壳
第一个代码单元 = 'a'(无壳)
最后一个代码单元 = 'c'(无壳)
主题长度下限 = 3

“编译选项”是由修饰符指定的选项; “整体选项”增加了选项
从模式中提取或推导出来的。 如果两组选项相同,只需一个
输出单个“选项”行; 如果没有选项,则省略该行。 “第一个代码
unit”是任何匹配必须开始的地方;如果有多个,它们被列为
“起始代码单元”。 “最后一个代码单元”是必须存在的最后一个文字代码单元
在任何比赛中。 这不一定是最后一个字符。 如果没有,则省略这些行
开始或结束代码单元被记录下来。

- 标注信息 修饰符请求有关模式中所有标注的信息。 一种
它们的列表在请求的任何其他信息的末尾输出。 对于每个
标注,给出它的数字或字符串,然后是在它后面的项目
格局。

通过 a 上下文

通常情况下, pcre2测试 将上下文块传递给 PCRE2_编译()。 如果 空上下文
设置了修饰符,但是,传递了 NULL。 这是为了测试 PCRE2_编译() 表现
在这种情况下正确(它使用默认值)。

指定 a 模式 in 十六进制

- 十六进制 修饰符指定模式的字符将被解释为
成对的十六进制数字。 对之间允许有空格。 例如:

/ab 32 59/十六进制

此功能是作为创建包含二进制零和其他
非打印字符。 默认情况下, pcre2测试 将模式作为零终止字符串传递
PCRE2_编译(),给出长度为 PCRE2_ZERO_TERMINATED。 然而,对于模式
以十六进制指定,则传递模式的实际长度。

发电 重复的 模式

一些测试使用非常重复的长模式。 而不是创建一个很长的
对于这种模式的输入行,您可以使用特殊的重复功能,类似于
上面的主题行描述的一个。 如果 扩大 修饰符存在于模式上,
具有形式的图案部分

\[ ]{ }

在模式传递给之前扩展 PCRE2_编译(). 例如,\[AB]{6000} 是
扩展为“ABAB...” 6000 次。 此构造不能嵌套。 一个初始的“\[”
仅当“]{”后跟十进制数字和“}”在后面找到时才能识别序列
图案。 如果不是,则字符保持在模式中不变。

如果扩展模式的一部分看起来像扩展,但实际上是实际的一部分
模式,可以通过在量词中给出两个值来避免不需要的扩展。 为了
例如,\[AB]{6000,6000} 不被识别为扩展项。

如果 info 修饰符设置在扩展模式上,扩展的结果是
包含在输出的信息中。

JIT 汇编

即时 (JIT) 编译是一种重量级的优化,可以大大加快
模式匹配。 见 PCRE2JIT 有关详细信息的文档。 JIT 编译发生,
可选地,在模式被成功编译成内部形式之后。 即时通讯
编译器将其转换为优化的机器代码。 它需要知道比赛时间是否
将使用 PCRE2_PARTIAL_HARD 和 PCRE2_PARTIAL_SOFT 选项,因为不同
针对不同情况生成代码。 见 部分的 “主题修饰符”中的修饰符
下面详细了解如何为每次匹配尝试指定这些选项。

JIT 编译是由 /吉特 模式修饰符,可以选择是
后跟一个等号和一个 0 到 7 范围内的数字。 组成的三位
该数字指定要编译三种 JIT 操作模式中的哪一种:

1 编译非部分匹配的JIT代码
2 编译JIT代码进行软部分匹配
4 编译JIT代码进行硬部分匹配

的可能值 /吉特 因此,修饰符是:

0 禁用 JIT
仅1个正常匹配
2 仅软部分匹配
3 正态和软偏匹配
4 仅硬部分匹配
6只软硬偏配
7 三种模式

如果没有给出数字,则假定为 7。 短语“部分匹配”意味着调用
PCRE2_匹配() 使用 PCRE2_PARTIAL_SOFT 或 PCRE2_PARTIAL_HARD 选项集。
请注意,这样的调用可能会返回一个完整的匹配; 这些选项可以实现
部分匹配,但不需要它。 另请注意,如果您仅请求 JIT 编译
对于部分匹配(例如,/jit=2)但不要设置 部分的 修饰符
主题行,该匹配不会使用 JIT 代码,因为没有为非部分编译
匹配。

如果 JIT 编译成功,编译后的 JIT 代码将在
运行适当类型的匹配,除非指定了不兼容的运行时选项。
有关详细信息,请参阅 PCRE2JIT 文档。 另见 实时堆栈 下面的修饰符
一种设置 JIT 堆栈大小的方法。

如果 快速 修饰符被指定,匹配是使用 JIT“快速路径”完成的
接口, PCRE2_jit_match(),它跳过了由
PCRE2_匹配(),当然在不支持 JIT 时不起作用。 如果 快速 is
没有指定 准时,假设 jit=7。

如果 验证 修饰符被指定,关于编译模式的信息显示
JIT 编译是否成功。 如果 验证 没有指定 准时,
假设 jit=7。 如果 JIT 编译成功,当 验证 已设置,文本“(JIT)”
当 JIT 编译的代码被匹配或不匹配时,被添加到第一个输出行
比赛中实际使用。

设置 a 当地

- /语言环境 修饰符必须指定语言环境的名称,例如:

/模式/语言环境=fr_FR

给定的语言环境已设置, PCRE2_maketables() 被调用来构建一组字符表
对于语言环境,然后将其传递给 PCRE2_编译() 编译正则时
表达。 匹配以下主题行时使用相同的表格。 这
/语言环境 修饰符仅适用于它出现的模式,但可以在
#图案 如果需要默认命令。 设置语言环境和备用字符表
相互排斥。

显示中 模式 记忆

- /记忆 修饰符导致用于保存编译的内存的字节大小
要输出的模式。 这不包括尺寸 PCRE2_代码 堵塞; 这只是
实际编译的数据。 如果随后将模式传递给 JIT 编译器,则
JIT 编译代码的大小也被输出。 下面是一个例子:

re> /a(b)c/jit,memory
内存分配(代码空间):21
内存分配(JIT 代码):1910

限制 嵌套 括弧

- 括号嵌套限制 修饰符对嵌套括号的深度设置限制
图案。 违反限制会导致编译错误。 库的默认值是
在构建 PCRE2 时设置,但 pcre2测试 设置自己的默认值 220,这是
运行标准测试套件。

限制 这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 模式 长度

- 最大模式长度 修饰符以代码单元为单位设置模式长度的限制
PCRE2_编译() 会接受。 违反限制会导致编译错误。 默认的
是 PCRE2_SIZE 变量可以容纳的最大数字(基本上是无限的)。

运用 这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 POSIX 包装纸 API

- /posix 修饰原因 pcre2测试 通过 POSIX 包装器 API 调用 PCRE2 而不是
它的原生 API。 这仅支持 8 位库。 请注意,这并不意味着 POSIX
匹配语义; 有关更多详细信息,请参阅 PCRE2POSIX 文档。 当 POSIX API
正在使用,以下模式修饰符设置选项 正则表达式() 功能:

无壳 REG_ICASE
多行 REG_NEWLINE
no_auto_capture REG_NOSUB
点数 REG_DOTALL )
ungreedy REG_UNGREEDY ) 这些选项不是
ucp REG_UCP ) POSIX 标准
UTF REG_UTF8 )

- regerror_buffsize 修饰符指定传递给的错误缓冲区的大小
注册错误() 在编译错误的情况下。 例如:

/abc/posix,regerror_buffsize=20

这提供了一种测试行为的方法 注册错误() 当缓冲区太小时
对于错误消息。 如果尚未设置此修饰符,则使用大缓冲区。

- 后文后文 主题修饰符的工作方式如下所述。 所有其他
修饰符会导致错误。

测试 这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 守卫 特集

- /堆栈守卫 修饰符用于测试使用 pcre2_set_compile_recursion_guard(),以
用于在编译期间检查堆栈可用性的函数
(见 PCRE2API 有关详细信息的文档)。 如果修饰符指定的数字是
大于零, pcre2_set_compile_recursion_guard() 被调用以设置回调
PCRE2_编译() 到本地函数。 它接收的参数是当前的嵌套
括号深度; 如果这大于修饰符给定的值,则非零是
返回,导致编译中止。

运用 替代 字符

指定的值 /表 修饰符必须是数字 0、1 或 2 之一。它
导致一组特定的内置字符表被传递给 PCRE2_编译()。 这
用于 PCRE2 测试以检查具有不同字符表的行为。 数字
指定表如下:

0 不传递任何特殊字符表
1 默认的 ASCII 表,分布在
PCRE2_chartables.c.dist
2 一组定义 ISO 8859 字符的表格

表2中,一些编码大于128的字符被标识为字母,
数字,空格等。 设置交替字符表和语言环境是相互的
排斥。

设置 一定 匹配 控制

以下修饰符实际上是主题修饰符,并在下面进行描述。 然而,
它们可能包含在模式的修饰符列表中,在这种情况下,它们将应用于每个
使用该模式处理的主题行。 他们可能不会出现在 #图案
命令。 这些修饰符不会影响编译过程。

aftertext 匹配后显示文本
allaftertext 捕获后显示文本
allcaptures 显示所有捕获
allusedtext 显示所有查阅过的文本
/g 全局全局匹配
标记显示标记值
替换= 指定替换字符串
startchar 在相关时显示起始字符
替代_扩展使用 PCRE2_SUBSTITUTE_EXTENDED
替代溢出长度使用 PCRE2_SUBSTITUTE_OVERFLOW_LENGTH
替代未知未设置使用 PCRE2_SUBSTITUTE_UNKNOWN_UNSET
Replace_unset_empty 使用 PCRE2_SUBSTITUTE_UNSET_EMPTY

这些修饰符可能不会出现在 #图案 命令。 如果您希望它们作为默认值,请设置
他们在 #主题 命令。

节省幅度 a 编译 模式

当一个模式与 修改器编译成功,被压入堆栈
编译模式,和 pcre2测试 期望下一行包含一个新模式(或
命令)而不是主题行。 当将编译的模式保存到
一个文件,如标题为“保存和恢复编译模式”的部分所述
以下。 这 修饰符与编译修饰符不兼容,例如 全球化
在比赛时间行动。 任何指定的都将被忽略,并带有警告消息,除了
更换,这会导致错误。 注意, 验证,这是允许的,不携带
通过到使用此模式的任何后续匹配。

分科 修饰语



可以出现在主题行中的修饰符和 #主题 命令有两种类型。

设置 匹配 选项

以下修饰符设置选项 PCRE2_匹配() or PCRE2_dfa_match()。 看 预产期
对它们的作用的描述。

锚定集 PCRE2_ANCHORED
dfa_restart 设置 PCRE2_DFA_RESTART
dfa_shortest 设置 PCRE2_DFA_SHORTEST
no_utf_check 设置 PCRE2_NO_UTF_CHECK
notbol 设置 PCRE2_NOTBOL
非空集 PCRE2_NOTEMPTY
notempty_atstart 设置 PCRE2_NOTEMPTY_ATSTART
noteol 设置 PCRE2_NOTEOL
partial_hard(或 ph)设置 PCRE2_PARTIAL_HARD
partial_soft(或 ps)设置 PCRE2_PARTIAL_SOFT

部分匹配修饰符带有缩写,因为它们出现
经常在测试中。

如果 /posix 模式上存在修饰符,导致 POSIX 包装器 API
使用,唯一有任何效果的选项设置修饰符是 诺博尔, 不是空的
笔记,分别导致 REG_NOTBOL、REG_NOTEMPTY 和 REG_NOTEOL 被传递给
正则执行(). 任何其他修饰符都会导致错误。

设置 匹配 控制

以下修饰符影响匹配过程或请求附加信息。
其中一些也可以在模式线上指定(见上文),在这种情况下它们适用
到与该模式匹配的每个主题行。

aftertext 匹配后显示文本
allaftertext 捕获后显示文本
allcaptures 显示所有捕获
allusedtext 显示所有参考文本(仅限非 JIT)
altglobal 替代全局匹配
callout_capture 在标注时间显示捕获
callout_data= 设置一个值以通过标注传递
callout_fail= [: ] 控制标注失败
callout_none 不提供标注功能
复制= 复制捕获的子串
dfa 使用 PCRE2_dfa_match()
find_limits 查找匹配和递归限制
得到= 提取捕获的子串
getall 提取所有捕获的子字符串
/g 全局全局匹配
jitstack= 设置 JIT 堆栈的大小
标记显示标记值
匹配限制= 设置匹配限制
memory 显示内存使用情况
null_context 与 NULL 上下文匹配
偏移= 设置起始偏移
offset_limit= 设置偏移限制
向量= 设置输出向量的大小
recursion_limit= 设置递归限制
替换= 指定替换字符串
startchar 在相关时显示 startchar
起始偏移= 与偏移量相同=
替代_扩展使用 PCRE2_SUBSTITUTE_EXTENDED
替代溢出长度使用 PCRE2_SUBSTITUTE_OVERFLOW_LENGTH
替代未知未设置使用 PCRE2_SUBSTITUTE_UNKNOWN_UNSET
Replace_unset_empty 使用 PCRE2_SUBSTITUTE_UNSET_EMPTY
zero_terminate 将主题作为零终止传递

这些修饰符的效果在以下部分中描述。

显示中 更多 文本

- 后文 修饰符请求以及输出主题字符串的一部分
匹配整个模式, pcre2测试 还应该输出剩余的
主题字符串。 这对于主题包含多个副本的测试很有用
相同的子串。 这 后文 修饰符请求对捕获的子字符串执行相同的操作
以及主要匹配的子字符串。 在每种情况下,余数在
在捕获号后面带有一个加号的行。

- 所有使用的文本 修改器要求在成功期间查阅的所有文本
应该显示解释器的模式匹配。 JIT 不支持此功能
匹配,并且如果使用 JIT 请求它会被忽略(带有警告消息)。 设置这个
如果在匹配开始时有后视,修饰符会影响输出,或者
最后向前看,或者如果在模式中使用了 \K。 前面或后面的字符
实际匹配的开始和结束在输出中由 '<' 或 '>' 字符指示
在他们下面。 下面是一个例子:

重新> /(?<=pqr)abc(?=xyz)/
数据> 123pqrabcxyz456\=allusedtext
0:pqrabcxyz
<<< >>>

这表明匹配的字符串是“abc”,前后字符串
"pqr" 和 "xyz" 在比赛期间(处理断言时)被咨询过。

- 起始字符 修饰符请求指定匹配的起始字符,如果
它与匹配字符串的开头不同。 发生这种情况的唯一时间是
\K 已作为匹配的一部分进行处理。 在这种情况下,匹配的输出
字符串从起始字符而不是从匹配点开始显示,用
前面的字符下的抑扬符字符。 例如:

重新> /abc\Kxyz/
数据> abcxyz\=startchar
0:abcxyz
^^^

不比 所有使用的文本起始字符 修饰符可以与 JIT 一起使用。 然而,这两
修饰符是相互排斥的。

显示中 这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 折扣值 of 所有 捕获 团体

- 全部捕获 修饰符要求所有潜在的捕获括号的值是
匹配后输出。 默认情况下,只有那些在实际使用的最高的
匹配是输出(对应于从 PCRE2_匹配())。 做过的组
不参加比赛输出为“ ”。

测试 标注

调用函数在以下情况下提供 pcre2测试 调用库匹配函数,除非
callout_none 被指定。 如果 标注_捕获 设置,当前捕获的组是
出现标注时输出。

- 标注失败 修饰符可以给一个或两个数字。 如果只有一个数,1
当达到该号码的标注时,将返回而不是 0。 如果两个数是
给定,标注时返回 1 达到第一次。 注意标注
带有字符串参数的总是给定数字零。 请参阅下面的“标注”以了解
当调用它时输出的描述。

- 标注数据 修饰符可以被赋予一个无符号或负数。 这被设置为
传递给匹配函数的“用户数据”,并在调用时传回
函数被调用。 零以外的任何值都用作从 pcre2测试's
标注功能。

查找 所有 火柴 in a 绳子

可以请求在一个主题内搜索所有可能的匹配项 全球化 or
/altglobal 修饰符。 找到匹配后,再次调用匹配函数
搜索主题的其余部分。 和...之间的不同 全球化替代全球
前者使用 起始偏移量 争论 PCRE2_匹配() or PCRE2_dfa_match() 开始
在整个字符串中搜索新点(这是 Perl 所做的),而
后者跳过了一个缩短的主题。 这会对匹配过程产生影响,如果
该模式以回顾断言(包括\b 或\B)开始。

如果匹配到空字符串,则下一次匹配使用 PCRE2_NOTEMPTY_ATSTART 和
PCRE2_ANCHORED 标志设置,以便搜索另一个非空匹配
点在主题上。 如果本次匹配失败,则开始偏移量提前,正常
匹配被重试。 这模仿了 Perl 在使用 /g 变化
或者 分裂() 功能。 通常,起始偏移量会提前一个字符,但如果
换行约定将 CRLF 识别为换行符,当前字符为 CR
跟在 LF 之后,会出现两个字符的提前。

测试 子串 提取 功能

- 复制得到 修饰符可用于测试 PCRE2_substring_copy_xxx()
PCRE2_substring_get_xxx() 职能。 它们可以被多次给予,并且每一次都可以
指定组名或编号,例如:

abcd\=复制=1,复制=3,获取=G1

如果 #主题 命令用于设置默认副本和/或获取列表,这些可以取消设置
通过指定一个负数来取消所有编号的组和一个空名称来取消
所有命名的组。

- 得到所有 修正测试 PCRE2_子字符串_列表_获取(), 提取所有捕获的
子串。

如果主题行匹配成功,方便提取的子串
函数在字符串编号后输出为 C、G 或 L,而不是冒号。 这是
除了正常的完整列表。 字符串长度(即从
提取函数)在每个子字符串后的括号中给出,后跟名称
当提取是按名称。

测试 这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 代换 function

如果 更换 修改器设置, PCRE2_替换() 函数被调用而不是一个
的匹配函数。 请注意,替换字符串不能包含逗号,因为
逗号表示修饰符的结束。 这不被认为是测试中的问题
程序。

与主题字符串不同, pcre2测试 不处理用于转义的替换字符串
序列。 在 UTF 模式下,检查替换字符串以查看它是否是有效的 UTF-8
细绳。 如果是,则正确转换为相应代码单元的 UTF 字符串
宽度。 如果它不是有效的 UTF-8 字符串,则直接复制各个代码单元。
这提供了一种传递无效 UTF-8 字符串以进行测试的方法。

以下修饰符设置选项(除了正常匹配选项)
PCRE2_替换():

全局 PCRE2_SUBSTITUTE_GLOBAL
替代_扩展 PCRE2_SUBSTITUTE_EXTENDED
替代溢出长度 PCRE2_SUBSTITUTE_OVERFLOW_LENGTH
Replacement_unknown_unset PCRE2_SUBSTITUTE_UNKNOWN_UNSET
Replacement_unset_empty PCRE2_SUBSTITUTE_UNSET_EMPTY

替换成功后,输出修改后的字符串,前面是
替代品。 如果没有匹配项,这可能为零。 这是一个简单的例子
替代测试:

/abc/替换=xxx
=abc=abc=
1:=xxx=abc=
=abc=abc=\=全局
2:=xxx=xxx=

主题和替换字符串应保持相对较短(少于 256
字符)用于替换测试,因为使用固定大小的缓冲区。 为了方便
测试缓冲区溢出,如果替换字符串以正方形数字开头
括号,该数字被传递给 PCRE2_替换() 作为输出缓冲区的大小,
替换字符串从下一个字符开始。 这是一个测试的例子
边缘情况:

/美国广播公司/
123abc123\=替换=[10]XYZ
1:123XYZ123
123abc123\=替换=[9]XYZ
失败:错误 -47:没有更多内存

的默认操作 PCRE2_替换() 是在输出时返回 PCRE2_ERROR_NOMEMORY
缓冲区太小。 但是,如果设置了 PCRE2_SUBSTITUTE_OVERFLOW_LENGTH 选项(通过
使用 替代溢出长度 修饰符), PCRE2_替换() 继续经历
匹配和替换的运动,以计算缓冲区的大小
必需的。 当这个情况发生时, pcre2测试 显示所需的缓冲区长度(包括
尾随零的空格)作为错误消息的一部分。 例如:

/abc/substitute_overflow_length
123abc123\=替换=[9]XYZ
失败:错误 -47:没有更多内存:需要 10 个代码单元

POSIX 和 DFA 匹配会忽略替换字符串。 指定部分匹配
引发错误返回(“错误的选项值”)来自 PCRE2_替换().

设置 这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 JIT 尺寸

- 实时堆栈 修饰符提供了一种设置所使用的最大堆栈大小的方法
即时优化代码。 如果未使用 JIT 优化,则忽略它。 这
value 是千字节数。 提供大于默认 32K 的堆栈是
只有非常复杂的模式才需要。

设置 匹配 递归 范围

- 匹配限制递归限制 修饰符在匹配中设置适当的限制
语境。 这些值被忽略时 查找限制 修饰符被指定。

查找 最低限度 范围

如果 查找限制 存在修饰符, pcre2测试 电话 PCRE2_匹配() 几次,
通过在匹配上下文中设置不同的值 PCRE2_set_match_limit()
pcre2_set_recursion_limit() 直到它找到每个参数的最小值
PCRE2_匹配() 完成没有错误。

如果正在使用 JIT,则只有匹配限制是相关的。 如果正在使用 DFA 匹配,
这两个限制都不相关,并且忽略此修饰符(带有警告消息)。

- 匹配限制 number 是对发生的回溯量的度量,并且
学习最小值是有指导意义的。 对于大多数简单的匹配,数字是
相当小,但对于具有大量匹配可能性的模式,它可以
随着主题字符串长度的增加,它会很快变大。 这
匹配限制递归 number 是衡量多少堆栈(或者,如果 PCRE2 是用
NO_RECURSE,完成匹配尝试需要多少堆内存。

显示中 标记 名称

- 标记 修饰符导致从返回的回溯控制动词的名称
呼吁 PCRE2_匹配() 要显示。 如果为匹配、不匹配或
部分匹配, pcre2测试 显示它。 对于匹配,它本身在一行上,标记为
“MK:”。 否则,将其添加到不匹配消息中。

显示中 记忆 用法

- 记忆 修饰原因 pcre2测试 记录所有内存分配和释放调用
发生在比赛操作中。

设置 a 开始 抵消

- 抵消 修饰符在匹配开始的主题字符串中设置偏移量。 它的
value 是代码单元的数量,而不是字符。

设置 an 抵消 限制

- 偏移量限制 修饰符为未锚定的匹配设置了限制。 如果找不到匹配项
在主题中的此偏移量处或之前开始,给出“不匹配”返回。 数据
value 是代码单元的数量,而不是字符。 使用此修饰符时,
使用偏移量限制 必须已为模式设置了修饰符; 如果不是,则错误是
产生。

设置 这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 尺寸 of 这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 产量 向量

- 向量 修饰符仅适用于它出现的主题行,尽管
当然它也可以用来设置默认值 #主题 命令。 它指定了数字
可用于存储匹配信息的成对偏移量。 默认是
15.

零值在测试 POSIX API 时很有用,因为它会导致 正则执行() 成为
使用 NULL 捕获向量调用。 不测试 POSIX API 时,使用零值
引起 pcre2_match_data_create_from_pattern() 被调用,以创建匹配
块大小正好适合图案。 (无法创建匹配
具有零长度ovector的块; 总是至少有一对偏移量。)

通过 这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 主题 as 零终止

默认情况下,主题字符串被传递给一个本地 API 匹配函数
正确的长度。 为了测试传递零终止字符串的工具,
零终止 提供了修饰符。 它导致长度被传递为
PCRE2_ZERO_TERMINATED。 (通过 POSIX 接口匹配时,该修饰符没有
效果,因为没有传递长度的设施。)

测试时 PCRE2_替换(),这个修饰符也有传递
以零结尾的替换字符串。

通过 a 上下文

通常情况下, pcre2测试 将上下文块传递给 PCRE2_匹配(), PCRE2_dfa_match() or
PCRE2_jit_match()。 如果 空上下文 设置了修饰符,但是,传递了 NULL。 这是
用于测试匹配函数在这种情况下是否正确运行(它们使用默认值
值)。 此修饰符不能与 查找限制 修改器或在测试时
替代函数。

备选 匹配 功能



默认情况下, pcre2测试 使用标准 PCRE2 匹配函数, PCRE2_匹配() 匹配
每个主题行。 PCRE2 还支持另一种匹配功能,
PCRE2_dfa_match(),它以不同的方式运行,并且有一些限制。 这
这两个函数之间的区别在 pcre2匹配 文档。

如果 DFA 设置修饰符,则使用替代匹配功能。 这个功能
查找主题中给定点的所有可能匹配项。 然而,如果 dfa_最短
修饰符被设置,处理在找到第一个匹配后停止。 这始终是
最短的匹配。

DEFAULT OUTPUT pcre2测试



本节描述正常匹配函数时的输出, PCRE2_匹配(),东京国立癌症中心医院
正在使用。

当比赛成功时, pcre2测试 输出捕获的子串列表,从
匹配整个模式的字符串的数字 0。 否则,它输出“不匹配”
当返回 PCRE2_ERROR_NOMATCH 或“部分匹配:”后跟部分
当返回为 PCRE2_ERROR_PARTIAL 时匹配子字符串。 (注意这是整个
在部分匹配期间检查的子字符串; 它可能包含之前的字符
如果涉及后视断言、\K、\b 或\B,则实际匹配开始。)

对于任何其他回报, pcre2测试 输出 PCRE2 负错误号和一个简短的
描述性短语。 如果错误是 UTF 字符串检查失败,则为
也输出失败字符的开始。 这是一个交互式示例
pcre2测试 运行。

$ PCR2测试
PCRE2 版本 9.00 2014-05-10

重新> /^abc(\d+)/
数据> abc123
0: abc123
1:123
数据> xyz
没有匹配

未设置的未设置捕获子字符串后跟未设置的子字符串不显示
pcre2测试 除非 全部捕获 修饰符被指定。 在下面的例子中,有
是两个捕获子串,但是当第一个数据行匹配时,第二个未设置
子串不显示。 “内部”未设置子字符串显示为“ ”,至于
第二条数据线。

重新> /(a)|(b)/
数据>一个
0:
1:
数据> b
0: 乙
1:
2: 乙

如果字符串包含任何非打印字符,它们将作为 \xhh 转义输出,如果
值小于 256 且未设置 UTF 模式。 否则它们会输出为 \x{hh...}
逃脱。 非打印字符的定义见下文。 如果 /后文
设置了修饰符,子串 0 的输出后跟主题的其余部分
字符串,由“0+”标识,如下所示:

重新> /猫/后文
资料> 白内障
0:猫
0+ 条

如果请求全局匹配,则将连续匹配尝试的结果输出到
顺序,像这样:

重新> /\Bi(\w\w)/g
数据> 密西西比州
0:问题
1:ss
0:问题
1:ss
0: ip
1:pp

仅当第一次匹配尝试失败时才输出“不匹配”。 这是一个例子
失败消息(由 抵消 修饰符已经结束
主题字符串):

重新> /xyz/
数据> xyz\=偏移=4
错误 -24(错误的偏移值)

请注意,虽然模式可以连续多行(使用简单的“>”提示)
继续),主题行可能不会。 但是换行符可以包含在主题中
通过 \n 转义(或 \r、\r\n 等,取决于换行序列设置)。

OUTPUT 备选 匹配 功能



当替代匹配函数时, PCRE2_dfa_match(), 被使用,输出包括
从主题中的第一个点开始的所有匹配项的列表
至少一场比赛。 例如:

重新> /(唐|橘|棕)/
数据>黄橘\=dfa
0:橘子
1:汤
2:棕褐色

在这个数据上使用正常匹配函数只能找到“tang”。 最长匹配
字符串总是首先给出(并编号为零)。 PCRE2_ERROR_PARTIAL 返回后,
输出是“部分匹配:”,后跟部分匹配的子字符串。 请注意,这
是在部分匹配期间检查的整个子字符串; 它可能包括
如果后视断言\b 或\B 是在实际匹配开始之前的字符
涉及。 (DFA 匹配不支持 \K。)

如果请求全局匹配,则在搜索结束时继续搜索更多匹配
最长的比赛。 例如:

re> /(tang|tangerine|tan)/g
数据>黄色橘子和浓郁的苏丹娜\=dfa
0:橘子
1:汤
2:棕褐色
0:汤
1:棕褐色
0:棕褐色

替代匹配函数不支持子串捕获,所以修饰符
与捕获的子字符串有关的内容不相关。

重新启动 A 部分的 MATCH



当替代匹配函数给出 PCRE2_ERROR_PARTIAL 返回时,
表明主题部分匹配模式,您可以重新开始匹配
额外的主题数据通过 dfa_重新启动 修饰符。 例如:

re> /^\d?\d(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\d\d$/
数据> 23ja\=P,dfa
部分匹配:23ja
数据> n05\=dfa,dfa_restart
0:n05

有关部分匹配的更多信息,请参阅 PCRE2部分 文档。

标注



如果模式包含任何标注请求, pcre2测试的标注函数被调用
在匹配过程中,除非 callout_none 被指定。 这适用于两个匹配
功能。

中的标注函数 pcre2测试 默认情况下返回零(继续匹配),但您可以
用一个 标注失败 主题行中的修饰符(如上所述)来改变这一点和
标注的其他参数。

插入标注在使用时会很有帮助 pcre2测试 检查复杂的规则
表达式。 有关标注的更多信息,请参阅 pcre2标注 文档。

带有数字参数的标注和带有字符串参数的标注的输出是
稍微不一样。

标注 - 数字的 参数

默认情况下,callout 函数显示callout 编号、开始时间和当前
标注时在主题文本中的位置,以及下一个要测试的模式项。
例如:

---> pqrabcdef
0 ^ ^ \d

此输出表明从 0 开始的匹配尝试发生了编号 XNUMX
当指针位于第七个字符时,主题字符串的第四个字符,以及
当下一个模式项是 \d 时。 如果 start 和 current 只输出一个抑扬符
职位是一样的。

编号为 255 的标注被假定为自动标注,插入作为
/自动标注 模式修饰符。 在这种情况下,而不是显示标注号码,
输出模式中的偏移量,前面有一个加号。 例如:

re> /\d?[AE]\*/auto_callout
数据> E*
--->E*
+0^\d?
+3 ^ [AE]
+8 ^^ \*
+10^^
0:E*

如果模式包含 (*MARK) 项,则每当更改
最新标记被传递给标注函数。 例如:

重新> /a(*MARK:X)bc/auto_callout
数据> abc
--->美国广播公司
+0 ^ 一个
+1 ^^ (*标记:X)
+10 ^^ 乙
最新标记:X
+11^^c
+12^^
0:美国广播公司

标记在匹配“a”和“b”之间变化,但在其余部分保持不变
匹配,所以没有更多的输出。 如果由于回溯,标记恢复为
未设置,文本“ "是输出。

标注 - 绳子 参数

带有字符串参数的标注的输出类似,除了
在位置指示器、标注字符串及其之前输出标注编号
在主题字符串的反射之前输出模式字符串中的偏移量,并且
每个标注都会反映主题字符串。 例如:

re> /^ab(?C'first')cd(?C"second")ef/
数据> abcdefg
标注 (7):“第一”
---> abcdefg
^^c
标注 (20):“第二个”
---> abcdefg
^ ^ 电子
0:ABC定义

非印刷 字元



在规划婴儿食品行业的工艺要求时,安全性和可靠性是工艺设计中最重要的方面。 pcre2测试 正在以模式的编译版本输出文本,字节除外
32-126 始终被视为非打印字符,因此显示为十六进制
逃脱。

在规划婴儿食品行业的工艺要求时,安全性和可靠性是工艺设计中最重要的方面。 pcre2测试 正在输出作为主题字符串匹配部分的文本,它的行为
以同样的方式,除非为模式设置了不同的语言环境(使用 /语言环境
修饰符)。 在这种情况下, isprint() 功能用于区分印刷和非印刷
打印字符。

保存 AND 还原 编译 模式



可以将编译后的模式保存在光盘或其他地方,稍后重新加载,
受到一些限制。 无法保存 JIT 数据。 所在的主机
重新加载的模式必须运行相同版本的 PCRE2,具有相同的代码单元
宽度,并且还必须具有相同的字节序、指针宽度和 PCRE2_SIZE 类型。 前
编译后的模式可以保存它们必须被序列化,即转换为流
字节。 单个字节流可以包含任意数量的编译模式,但它们必须全部
使用相同的字符表。 表的单个副本包含在字节流中
(其大小为 1088 字节)。

名称开头的函数 PCRE2_序列化_ 用于序列化和去
连载。 它们在 pcre2序列化 文档。 在本节中,我们
描述其特点 pcre2测试 可用于测试这些功能。

当一个模式与 修改器编译成功,它被压入堆栈
编译模式,和 pcre2测试 期望下一行包含一个新模式(或
命令)而不是主题行。 通过这种方式,可以编译许多模式
并保留。 这 修饰符不兼容 POSIX, 和控制作用的修饰符
在比赛时间被忽略(带有一条消息)。 这 验证 修饰符仅适用于编译
时间。 命令

#节省

导致所有堆叠模式被序列化并将结果写入命名文件。
之后,所有堆叠的模式都被释放。 命令

#加载

读取文件中的数据,然后对其进行反序列化,使用
生成的编译模式添加到模式堆栈中。 上面的图案
可以通过 #pop 命令检索堆栈,该命令后面必须跟有主题行
将与模式匹配,像往常一样以空行或结尾结束
文件。 此命令后面可能跟一个仅包含控制修饰符的修饰符列表
在模式编译后执行。 特别是, 十六进制, POSIX 是不
允许,也不允许任何选项设置修饰符。 但是,JIT 修饰符是允许的。
这是一个保存和重新加载两个模式的示例。

/ABC/推
/xyz/推
#保存临时文件
#加载临时文件
#流行信息
XYZ

#pop jit,二进制代码
ABC

If 验证 与#pop 一起使用,它不会自动暗示 准时,这是不同的
从在模式上使用时开始的行为。

使用 onworks.net 服务在线使用 pcre2test


免费服务器和工作站

下载 Windows 和 Linux 应用程序

Linux 命令

Ad




×
广告
❤️在这里购物、预订或购买——免费,有助于保持服务免费。