“regexp:Groups”有什么用,如何在芭蕾舞演员正则表达式中访问它?

What is the use of `regexp:Groups` and how to access it in ballerina regexp?

提问人:Lakshan Weerasinghe 提问时间:11/13/2023 更新时间:11/13/2023 访问量:44

问:

我需要知道对象的用例是什么?regexp:Groups

正则表达式 女演员芭蕾舞 -天鹅湖

评论

0赞 AdrianHHH 11/13/2023
这回答了你的问题吗?参考 - 这个正则表达式是什么意思?

答:

3赞 Lakshan Weerasinghe 11/13/2023 #1

当我们需要提取匹配字符串的特定部分时,我们需要捕获组。通过将正则表达式模式的一部分括在括号中,它形成了一个捕获组。芭蕾舞女演员包中定义如下的类型有助于提取这些特定部分。Groupsregexp

public type Groups readonly & [Span, Span?...];

Groups是 readonly 和对象列表之间的交集。列表的第 0 个成员表示完整正则表达式模式的匹配子字符串。i>1 时的第 i 个索引成员将生成与第 i 个捕获组匹配的子字符串。Span

假设您需要将字符串与日期模式匹配,例如,。您需要提取日期、月份和年份值。在这种情况下,您可以使用捕获组来提取这些特定值。下面的芭蕾舞女演员代码将帮助您进一步理解它。DD-MM-YYYY

import ballerina/io;
import ballerina/lang.regexp;

public function main() {
    string date = "13-11-2023";
    regexp:Groups? result = re `(\d{2})-(\d{2})-(\d{4})`.findGroups(date);
    if result is regexp:Groups {
        io:println(result[0].substring()); // 13-11-2023

        regexp:Span? day = result[1];
        if day !is () {
            io:println(day.substring()); // 13
        }
        
        regexp:Span? month = result[2];
        if month !is () {
            io:println(month.substring()); // 11
        }

        regexp:Span? year = result[3];
        if year !is () {
            io:println(year.substring()); // 2023
        }
    }
}