RegEx¶
类别: 核心
简要说明¶
用于使用正则表达式搜索模式的文本的类。
方法¶
无效 |
clear ( ) |
get_group_count ( ) const |
|
get_names ( ) const |
|
get_pattern ( ) const |
|
is_valid ( ) const |
|
search_all ( String subject, int offset=0, int end=-1 ) const |
|
sub ( String subject, String replacement, bool all=false, int offset=0, int end=-1 ) const |
描述¶
正则表达式(或regex)是一种紧凑的语言,可用于识别遵循特定模式的字符串,如URL、电子邮件地址、完整的句子等。例如,regex ab[0-9]
会找到任何字符串 ab
后面跟着任何数字 0
到 9
. 要获得更深入的了解,您可以很容易地在互联网上找到各种教程和详细的解释。
首先,需要使用搜索模式编译regex对象,使用 compile 才能使用。
var regex = RegEx.new()
regex.compile("\\w-(\\d+)")
必须首先对gdscript的搜索模式进行转义,然后才能对表达式进行转义。例如, compile("\\d+")
会被regex读取为 \d+
. 同样地, compile("\"(?:\\\\.|[^\"])*\"")
会被解读为 "(?:\\.|[^"])*"
使用 search 您可以在给定的文本中找到模式。如果找到图案, RegExMatch 返回,您可以使用以下函数检索结果的详细信息: RegExMatch.get_string 和 RegExMatch.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 search ( String subject, int offset=0, int end=-1 ) const
在文本中搜索已编译的模式。返回 RegExMatch 第一个匹配结果的容器(如果找到),否则 null
. 可以指定要在其中搜索的区域,而不修改起始和结束锚定的位置。
在文本中搜索已编译的模式。返回的数组 RegExMatch 每个不重叠结果的容器。如果未找到结果,则返回空数组。可以指定要在其中搜索的区域,而不修改起始和结束锚定的位置。
在文本中搜索已编译的模式,并将其替换为指定的字符串。转义和反引用,如 $1
和 $name
扩展和解决。默认情况下,只替换第一个实例,但可以为所有实例(全局替换)更改它。可以指定要在其中搜索的区域,而不修改起始和结束锚定的位置。