gpt4 book ai didi

regex - Dart:RegExp 示例

转载 作者:行者123 更新时间:2023-12-01 16:28:43 28 4
gpt4 key购买 nike

我试图让我的 Dart Web 应用程序:(1) 确定特定字符串是否与给定的正则表达式匹配,(2) 如果匹配,则从字符串中提取组/段。

具体来说,我想确保给定的字符串具有以下形式:

http://myapp.example.com/#<string-of-1-or-more-chars>[?param1=1&param2=2]

哪里<string-of-1-or-more-chars>就是这样:任何 1 个以上字符的字符串,其中查询字符串 ( [?param1=1&param2=2] ) 是可选

所以:

  1. 判断字符串是否与正则表达式匹配;如果是这样
  2. 提取<string-of-1-or-more-chars>从字符串中分组/分段

这是我最好的尝试:

String testURL = "http://myapp.example.com/#fizz?a=1";
String regex = "^http://myapp.example.com/#.+(\?)+\$";
RegExp regexp= new RegExp(regex);
Iterable<Match> matches = regexp.allMatches(regex);
String viewName = null;
if(matches.length == 0) {
// testURL didn't match regex; throw error.
} else {
// It matched, now extract "fizz" from testURL...
viewName = ??? // (ex: matches.group(2)), etc.
}

在上面的代码中,我知道我错误地使用了 RegExp API(我什至没有在任何地方使用 testURL),最重要的是,我不知道如何使用 RegExp API 来提取(在本例中)URL 中的“fizz”段/组。

最佳答案

RegExp 类提供了一个用于单个匹配的便捷方法:

RegExp regExp = new RegExp(r"^http://myapp.example.com/#([^?]+)");
var match = regExp.firstMatch("http://myapp.example.com/#fizz?a=1");
print(match[1]);

注意:我使用了 anubhava 的正则表达式(你的正则表达式没有正确转义 ?)。

注2:尽管这里没有必要,但在正则表达式中使用原始字符串通常是一个好主意,因为您不需要在其中转义 $ 和\。有时使用三引号原始字符串也很方便:new RegExp(r"""some'weird"regexp\$""")

关于regex - Dart:RegExp 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20913096/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com