方法
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_info
非NULL
,即使在函数返回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
;调用者将承担数据的所有权,并负责释放它。