结构

GLibRegex

自: 2.14

说明 [src]

struct GRegex {
  /* No available fields */
}

GRegex 是正则表达式模式的“已编译”形式。

GRegex 使用与 Perl 正则表达式类似的语法和语义来实现正则表达式模式匹配。查阅 PCRE 文档 中的语法定义。

某些函数接受 start_position 参数,将其设为不同于仅传递缩短的字符串和在模式以任何类型的回溯断言开头的模式中设置 G_REGEX_MATCH_NOTBOL。例如,考虑模式“\Biss\B”,该模式查找单词中间出现的“iss”。(“\B”仅在主体中的当前位置不是单词边界时才匹配。)当从第四个字节(即“issipi”)应用于字符串“Mississipi”时,它不匹配,因为“\B”在主体的开头始终为假,而主体被视为单词边界。但是,如果传递整个字符串,但将 start_position 设置为 4,它将找到“iss”的第二个出现,因为它能够回溯到起始点之外,发现它前面是一个字母。

请注意,除非您设置了 G_REGEX_RAW 标志,否则传递给这些函数的所有字符串都必须用 UTF-8 编码。字符串中的长度和位置是字节数而不是字符数,因此,例如,“\xc3\xa0”(即“à”)是两个字节长,但它被视为一个字符。如果您设置了 G_REGEX_RAW 标志,字符串可以是非有效的 UTF-8 字符串,并且一个字节被视为一个字符,因此,“\xc3\xa0”是两个字节并包含两个字符。

匹配模式时,“\n”仅匹配字符串中的“\n”字符,而“\r”仅匹配“\r”字符。要匹配任何换行序列,请使用“\R”。此特定组匹配由两个字符序列组成的 CR + LF (“\r\n”) 或单个字符之一 LF(换行符,U+000A,“\n”),VT 垂直制表符,U+000B,“\v”),FF(换页符,U+000C,“\f”),CR(回车符,U+000D,“\r”),NEL(下一行,U+0085),LS(行分隔符,U+2028)或PS(段落分隔符, U+2029)。

圆点、抑扬符和美元字符的的行为受换行字符影响,默认情况下是识别任何换行字符(由“\R”识别的相同字符)。可以使用 G_REGEX_NEWLINE_CRG_REGEX_NEWLINE_LFG_REGEX_NEWLINE_CRLF 编译选项以及 G_REGEX_MATCH_NEWLINE_ANYG_REGEX_MATCH_NEWLINE_CRG_REGEX_MATCH_NEWLINE_LFG_REGEX_MATCH_NEWLINE_CRLF 匹配选项来更改此内容。编译模式时如果有 G_REGEX_EXTENDED 且遇到字符分类之外未转义的“#”,这些设置也相关。这表示持续到下一个换行符之后的注释。

从不同线程创建和操作同一 GRegex 结构不是问题,因为 GRegex 在创建和销毁之间不会修改其内部状态,另一方面,GMatchInfo 不是线程安全的。

低级别正则表达式功能是通过由 Philip Hazel 编写的出色 PCRE 库获得的。

2.14 起可用

构造函数

g_regex_new

将正则表达式编译成内部形式,并执行 GRegex 结构的初始设置。

自: 2.14

函数

g_regex_check_replacement

检查 replacement 是否为有效的替换字符串(请参见 g_regex_replace()),即其中的所有转义序列都是有效的。

自: 2.14

g_regex_error_quark
没有可用的描述。

g_regex_escape_nul

String 中的空字符转义为“\x00”。它可用于编译包含嵌入空字符的正则表达式。

自 2.30 起

g_regex_escape_string

转义 string 中用于正则表达式的特殊字符,例如“a.b*c”变为“a.b*c”。此函数对动态生成正则表达式很有用。

自: 2.14

g_regex_match_simple

扫描 String 中的 pattern 是否匹配。

自: 2.14

g_regex_split_simple

以该模式拆分字符串,并返回令牌数组。如果模式包含捕获括号,还将返回每种子字符串的文本。如果模式在字符串中任何地方都没有匹配,则将整个字符串返回为第一个令牌。

自: 2.14

实例方法

g_regex_get_capture_count

返回 pattern 中捕获子模式的数量。

自: 2.14

g_regex_get_compile_flags

返回使用 regex 创建的编译选项。

自 2.26 起

g_regex_get_has_cr_or_lf

检查模式是否包含显式 CRLF 引用。

自 2.34 起

g_regex_get_match_flags

返回使用 regex 创建的匹配选项。

自 2.26 起

g_regex_get_max_backref

返回模式中最高反向引用的编号,如果模式中不包含反向引用,则返回 0。

自: 2.14

g_regex_get_max_lookbehind

获取模式中最长后顾谓词中的字符数。此信息在使用部分匹配工具进行多段匹配时很有用。

自 2.38 起

g_regex_get_pattern

获取与 regex 关联的模式字符串,即传递给 g_regex_new() 的字符串的副本。

自: 2.14

g_regex_get_string_number

检索名为 name 的子表达式的数量。

自: 2.14

g_regex_match

string 中扫描 regex 中的模式匹配。match_options 与创建 regex 结构时指定的匹配选项相结合,让你在重用 GRegex 结构时具有更大的灵活性。

自: 2.14

g_regex_match_all

使用标准的正则表达式匹配算法仅检索字符串中最长的匹配。此函数使用不同的算法,因此可以检索所有可能的匹配。有关更多文档,请参阅 g_regex_match_all_full()。

自: 2.14

g_regex_match_all_full

使用标准的正则表达式匹配算法仅检索 string 中最长的匹配,无法获取所有可用的匹配。例如,将 "<a> <b> <c>" 与模式 "<.*>" 匹配,你将得到 "<a> <b> <c>"

自: 2.14

g_regex_match_full

string 中扫描 regex 中的模式匹配。match_options 与创建 regex 结构时指定的匹配选项相结合,让你在重用 GRegex 结构时具有更大的灵活性。

自: 2.14

g_regex_ref

regex 的引用计数增加 1。

自: 2.14

g_regex_replace

regex 中模式的所有出现替换为替换文本。替换文本中表单为 \number\g<number> 的反向引用通过匹配的第 n 个捕获到的子表达式进行插值,\g<name> 指代具有给定名称的捕获到的子表达式。\0 指代完整匹配,但 \0 后跟一个数字则是字符的八进制表示。要在替换中包含一个原义 \,请写成 \\\\

自: 2.14

g_regex_replace_eval

将 regex 中模式的出现替换为该出现对应的 eval 输出。

自: 2.14

g_regex_replace_literal

regex 中模式的所有出现替换为替换文本。replacement 会被原义替换,要包含反向引用,请使用 g_regex_replace()。

自: 2.14

g_regex_split

以该模式拆分字符串,并返回令牌数组。如果模式包含捕获括号,还将返回每种子字符串的文本。如果模式在字符串中任何地方都没有匹配,则将整个字符串返回为第一个令牌。

自: 2.14

g_regex_split_full

以该模式拆分字符串,并返回令牌数组。如果模式包含捕获括号,还将返回每种子字符串的文本。如果模式在字符串中任何地方都没有匹配,则将整个字符串返回为第一个令牌。

自: 2.14

g_regex_unref

regex 的引用计数减少 1。当引用计数降为零时,它将释放与 regex 结构相关的所有内存。

自: 2.14