gpt4 book ai didi

regex - 使用 Regex 的 DART 条件查找和替换

转载 作者:行者123 更新时间:2023-12-03 02:54:57 25 4
gpt4 key购买 nike

我有一个字符串,有时在末尾包含某个子字符串,有时不包含。当字符串存在时,我想更新它的值。当它不存在时,我想将它添加到现有字符串的末尾。

例如:

int _newCount = 7;
_myString = 'The count is: COUNT=1;'
_myString2 = 'The count is: '
_rRuleString.replaceAllMapped(RegExp('COUNT=(.*?)\;'), (match) {

//if there is a match (like in _myString) update the count to value of _newCount
//if there is no match (like in _myString2) add COUNT=1; to the string

}

我尝试过使用返回值:

return "${match.group(1).isEmpty ? _myString + ;COUNT=1;' : 'COUNT=$_newCount;'}";

但它不起作用。

最佳答案

请注意,replaceAllMatched 只会在匹配时执行替换,否则不会执行替换(插入仍然是用某个字符串替换空字符串)。

您预期的匹配项始终位于字符串的末尾,您可以在当前代码中利用这一点。您需要一个 可选 匹配 COUNT= 的正则表达式,然后是第一个 ; 之前的一些文本,包括字符,然后检查当前位置是否为字符串的结尾。

然后,只需要遵循逻辑:如果第 1 组匹配,则设置新的计数值,否则,添加 COUNT=1; 字符串:

正则表达式是

(COUNT=[^;]*;)?$

参见 regex demo .

详情

  • (COUNT=[^;]*;)? - 可选组 1:COUNT= 以外的任何 0 个或多个字符; 然后是 ;
  • $ - 字符串结尾。

Dart 代码:

_myString.replaceFirstMapped(RegExp(r'(COUNT=[^;]*;)?$'), (match) {
return match.group(0).isEmpty ? "COUNT=1;" : "COUNT=$_newCount;" ; }
)

注意 replaceFirstMatched 的使用,您需要替换第一个匹配项。

关于regex - 使用 Regex 的 DART 条件查找和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63149240/

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