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

标签 ios objective-c regex string variables

我在 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/

相关文章:

iphone - 带有动画的 UIButton 图像按钮

ios - 为 UINavigationBar 添加背景图片覆盖标题

ios - CAShapeLayer 的框架和边界

ios - 将输入到 UITextField 中的内容转换为计数器编号,例如 00 :01

ios - 如何通过更改方向在layoutSubview中使用CAGradientLayer

javascript - 如何使用 RegEx 从 Html 字符串中删除 html 标签?

ios - 无法打开,因为您没有查看权限 - React Native - Expo?

iPhone UITableViewController 仅移动表格中的特定行

c# - 尝试使用正则表达式获取 URL 的最后一部分

Javascript 数字正则表达式测试失败 - 无法弄清楚原因