方法

GLibRegexmatch_all_full

自:2.14

声明 [源]

gboolean
g_regex_match_all_full (
  const GRegex* regex,
  const gchar* string,
  gssize string_len,
  gint start_position,
  GRegexMatchFlags match_options,
  GMatchInfo** match_info,
  GError** error
)

描述 [源]

使用标准的正则表达式匹配算法,只检索字符串中的最长匹配,因此无法获取所有匹配。例如,将“<a> <b> <c>”与模式“<.*>”匹配,您会得到“<a> <b> <c>”。

此函数使用不同的算法(称为DFA,即确定性有限自动机),因此可以检索所有可能的匹配,所有匹配都从字符串中的同一位置开始。例如,匹配“<a> <b> <c>”与模式“<.*>”,您将获得三个匹配:“<a> <b> <c>”,“<a> <b>”和“<a>”。

使用g_match_info_get_match_count()检索匹配字符串的数量。要获取匹配字符串及其位置,可以使用,分别,g_match_info_fetch和g_match_info_fetch_pos()。请注意,字符串是按长度反向排序返回的;也就是说,最长匹配字符串首先给出。

请注意,DFA算法比标准的慢,并且它不能捕获子字符串,因此反向引用不起作用。

start_position设置为与在以任何类型的向后断言开始的模式(如“\b”)情况下只传递缩短的字符串并将G_REGEX_MATCH_NOTBOL设置在选项中不同。

除非在选项中指定了G_REGEX_RAW,否则string必须有效UTF-8。

一个用于获取匹配信息的GMatchInfo结构,如果非NULL,将存储在match_info中。请注意,如果match_infoNULL,即使在函数返回FALSE时(即即使正则表达式实际上未匹配),它也会被创建,即您必须释放它。

string不会被复制,并在内部用于GMatchInfo。如果您在释放或修改string后在任何GMatchInfo方法(除g_match_info_free()之外)使用任何GMatchInfo方法,则行为将是未定义的。

自:2.14

参数

string

类型: 一个gchar数组

要扫描的匹配字符串。

数组的长度由string_len参数指定。
数据归方法调用者所有。
每个元素是一个以空字符终止的UTF-8字符串。
string_len

类型: gssize

字符串的长度,单位为字节,如果字符串是空终止的,则为-1。

start_position

类型: gint

要匹配的字符串的起始索引,单位为字节。

match_options

类型: GRegexMatchFlags

匹配选项。

match_info

类型: GMatchInfo

一个指向存储GMatchInfo位置的指针,或者如果你不需要它,则为NULL

该参数将由函数设置。
该参数可以是NULL
方法调用者负责获取返回的数据,并负责释放它。
error

类型: GError **

用于存储可恢复错误的返回位置。

该参数可以是NULL
如果返回位置不是NULL,则必须将其初始化为NULL GError*
如果没有错误,方法将留下初始化的参数为NULL
如果发生错误,参数将设置为一个新分配的GError;调用者将承担数据的所有权,并负责释放它。

返回值

类型: gboolean

TRUE表示字符串匹配成功,否则为FALSE