方法

GLibRegexmatch_full

since: 2.14

声明 [src]

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

描述 [src]

string 中扫描正则表达式 regex 的匹配。将 match_options 与在创建正则表达式结构体时指定的匹配选项组合,这使您在重用 GRegex 结构体时拥有更大的灵活性。

设置 start_position 与仅传递缩短的字符串并在模式开始时设置 G_REGEX_MATCH_NOTBOL 的情况不同,如果是像 “\b” 这样的任何类型的向后查询断言。

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

一个用于获取匹配信息的 GMatchInfo 结构体,如果非 NULL,则存储在 match_info 中。请注意,如果 match_infoNULL,即使在函数返回 FALSE 的情况下,它也会被创建,即无论其是否真正匹配正则表达式,都必须释放它。

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

要检索字符串中模式的全部非重叠匹配,可以使用 g_match_info_next()。

static void
print_uppercase_words (const gchar *string)
{
  // Print all uppercase-only words.
  GRegex *regex;
  GMatchInfo *match_info;
  GError *error = NULL;
  
  regex = g_regex_new ("[A-Z]+", G_REGEX_DEFAULT, G_REGEX_MATCH_DEFAULT, NULL);
  g_regex_match_full (regex, string, -1, 0, 0, &match_info, &error);
  while (g_match_info_matches (match_info))
    {
      gchar *word = g_match_info_fetch (match_info, 0);
      g_print ("Found: %s\n", word);
      g_free (word);
      g_match_info_next (match_info, &error);
    }
  g_match_info_free (match_info);
  g_regex_unref (regex);
  if (error != NULL)
    {
      g_printerr ("Error while matching: %s\n", error->message);
      g_error_free (error);
    }
}

Available since: 2.14

参数

string

类型: 一个 gchar 数组

要扫描匹配的字符串。

数组的长度由 string_len 参数指定。
数据由方法调用者拥有。
每个元素是一个以 NUL 结尾的 UTF-8 字符串。
string_len

类型: gssize

string 的长度,以字节为单位,或者 -1 如果 string 以空终止。

start_position

类型: gint

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

match_options

类型: GRegexMatchFlags

匹配选项。

match_info

类型: GMatchInfo

指向存储 GMatchInfo 的位置的指针,或者 NULL 如果不需要。

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

类型: GError **

恢复错误的位置。

参数可以是 NULL
如果返回位置不是 NULL,那么您必须将它初始化为一个 NULLGError*
如果没有错误,方法将自动将参数初始化为 NULL
在发生错误的情况下,参数将被设置为一个新的 GError;调用者将获得数据的所有权,并负责释放它。

返回值

类型: gboolean

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