RegEx

Inherits: Reference < Object

类别: 核心

简要说明

用于使用正则表达式搜索模式的文本的类。

方法

无效

clear ( )

Error

compile ( String pattern )

int

get_group_count ( ) const

Array

get_names ( ) const

String

get_pattern ( ) const

bool

is_valid ( ) const

RegExMatch

search ( String subject, int offset=0, int end=-1 ) const

Array

search_all ( String subject, int offset=0, int end=-1 ) const

String

sub ( String subject, String replacement, bool all=false, int offset=0, int end=-1 ) const

描述

正则表达式(或regex)是一种紧凑的语言,可用于识别遵循特定模式的字符串,如URL、电子邮件地址、完整的句子等。例如,regex ab[0-9] 会找到任何字符串 ab 后面跟着任何数字 09 . 要获得更深入的了解,您可以很容易地在互联网上找到各种教程和详细的解释。

首先,需要使用搜索模式编译regex对象,使用 compile 才能使用。

var regex = RegEx.new()
regex.compile("\\w-(\\d+)")

必须首先对gdscript的搜索模式进行转义,然后才能对表达式进行转义。例如, compile("\\d+") 会被regex读取为 \d+ . 同样地, compile("\"(?:\\\\.|[^\"])*\"") 会被解读为 "(?:\\.|[^"])*"

使用 search 您可以在给定的文本中找到模式。如果找到图案, RegExMatch 返回,您可以使用以下函数检索结果的详细信息: RegExMatch.get_stringRegExMatch.get_start .

var regex = RegEx.new()
regex.compile("\\w-(\\d+)")
var result = regex.search("abc n-0123")
if result:
    print(result.get_string()) # Would print n-0123

捕获组的结果 () 可以通过将组号传递给 RegExMatch . 组0是默认值,并且始终引用整个模式。在上面的示例中,调用 result.get_string(1) 会给你 0123 .

此版本的regex还支持命名捕获组,这些名称可用于检索结果。如果两个或多个组具有相同的名称,则该名称将只引用具有匹配项的第一个组。

var regex = RegEx.new()
regex.compile("d(?<digit>[0-9]+)|x(?<digit>[0-9a-f]+)")
var result = regex.search("the number is x2f")
if result:
    print(result.get_string("digit")) # Would print 2f

如果需要处理多个结果, search_all 生成所有不重叠结果的列表。这可以与 for 循环以方便使用。

for result in regex.search_all("d01, d03, d0c, x3f and x42"):
    print(result.get_string("digit"))
# Would print 01 03 3f 42
# Note that d0c would not match

方法说明

  • void clear ( )

此方法重置对象的状态,就像它是新创建的一样。也就是说,它取消分配这个对象的正则表达式。

编译并分配要使用的搜索模式。退换商品 @GlobalScope.OK 如果编译成功。如果遇到错误,详细信息将打印到标准输出,并返回错误。

  • int get_group_count ( ) const

返回已编译模式中捕获组的数目。

  • Array get_names ( ) const

返回已编译模式中已命名捕获组的名称数组。它们是按外观定做的。

  • String get_pattern ( ) const

返回已编译的原始搜索模式。

  • bool is_valid ( ) const

返回此对象是否分配了有效的搜索模式。

在文本中搜索已编译的模式。返回 RegExMatch 第一个匹配结果的容器(如果找到),否则 null . 可以指定要在其中搜索的区域,而不修改起始和结束锚定的位置。

在文本中搜索已编译的模式。返回的数组 RegExMatch 每个不重叠结果的容器。如果未找到结果,则返回空数组。可以指定要在其中搜索的区域,而不修改起始和结束锚定的位置。

在文本中搜索已编译的模式,并将其替换为指定的字符串。转义和反引用,如 $1$name 扩展和解决。默认情况下,只替换第一个实例,但可以为所有实例(全局替换)更改它。可以指定要在其中搜索的区域,而不修改起始和结束锚定的位置。