gpt4 book ai didi

ios - Objective-c RegEx 变量名称($1、$2 等)

转载 作者:行者123 更新时间:2023-11-29 13:19:13 25 4
gpt4 key购买 nike

我在 Objective-C 中有一个正则表达式,我需要知道如何获取某个变量...

我想找到一个字符串,其中某处有字母“a”,后面跟着任意数字(包括零)的 B、C 和 D,在第一个非 B、C、D 我想关闭我的搜索语句。然后我想用 F 替换 A 并将 F 添加到我的搜索字符串的末尾。

例如:“ZYXABCBBDBCBDEJKS”将搜索并返回:“ZYXABCBBDBCBDEJKS”...所以我现在使用的字符串是“ABCBBDBCBDE”,我希望这个字符串变成这个string "FBCBBDBCBDEF"然后被放回原来的字符串...所以最终返回的字符串将是 "ZYXFBCBBDBCBDEFJKS”

我是 RegEx 的新手,但我用下面的 objective-c 代码试了一下,但没有用……我想这是因为我的变量在代码的第二行(在“withTemplate”部分)是错误的...我不应该使用“$2”或“$1”吗?

代码:

regex = [NSRegularExpression regularExpressionWithPattern:@"A(B|C|D)*([^B|C|D])"
options:0
error:nil];
modifiedString = [regex stringByReplacingMatchesInString:myString
options:0
range:NSMakeRange(0, [htmlstring length])
withTemplate:@"F$1$2F"];

最佳答案

在您的正则表达式中 - (B|C|D)* 只会捕获 (B|C|D) 中的最后一个匹配字符,因为 * 不在捕获的组中。此外,在字符类中,您不需要像在第 3 部分中那样使用 pipe 进行交替。因此,要么使用 character class,要么使用 pipe 分组交替。在这种特殊情况下,我建议在这两个地方都使用字符类。

因此,您可以尝试将正则表达式更改为:

"A([BCD]*)([^BCD])"

关于ios - Objective-c RegEx 变量名称($1、$2 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14802981/

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