gpt4 book ai didi

ios - 将NSRegularExpression更新为特定模式

转载 作者:行者123 更新时间:2023-12-01 18:12:23 26 4
gpt4 key购买 nike

我有一个像这样的NSString模式:

NSString *pattern = @"@[A-Za-z0-9]+";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:nil];

此模式显示所有以@开头且后接至少一个字母数字字符的匹配项。

如何采用这种方式,以使模式与所有字母数字字符_或-匹配,并以字母数字字符开头和结尾?

一些例子是:
@a
@0
@a-z
@hello
@ab_z9

一些边缘情况是:
If it is @Liam_O'Flaherty then I want it to match to @Liam_O
Or
If it is @a- then I want it to match to @a

最佳答案

我会考虑以下内容:

@(?=[A-Za-z0-9])[A-Za-z0-9-_]+(?<=[A-Za-z0-9])
其组成部分是:
  • 后面紧跟着@[A-Za-z0-9-_]+是搜索的核心,它匹配具有1个或多个字母数字字符,连字符或下划线的任何字符串。
  • 开头的前瞻断言(?=[A-Za-z0-9])表示“但必须以字母数字开头。”
  • 结尾的后置断言(?<=[A-Za-z0-9])表示“并且必须以字母数字结尾”。

  • 这就提出了一些极端的问题,即:
  • 您想对口音做什么?如果要处理带重音的字符(例如@naïve@resumé),则可能要使用\p{L}而不是A-Za-z。 (并且,如果将其放在代码中的字符串中,则需要转义反斜杠,以便使用\\p{L}表示。)
  • 如果字符串中包含非字母数字字符,例如@this.is.wrong@Liam_O'Flaherety,该怎么办。或者,如果不以字母数字结尾,该怎么办? @a-。上面的正则表达式(以及其他答案中提供的正则表达式)将与无效字符(例如@this@Liam_O@a)匹配。看来这可能不是对这种情况的正确处理。就个人而言,我倾向于进一步限定正则表达式以排除这些情况,但是如果不对您的业务问题进行更广泛的描述,则很难说出在这种情况下什么是对的。
    话虽如此,我打赌您可能不关心此异常,因此正则表达式中的此缺陷可能与您无关。但是,如果您愿意,请告诉我们什么是极端情况,以及您希望如何处理这些极端情况,我们可以在答复中更加具体。
  • 关于ios - 将NSRegularExpression更新为特定模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28016975/

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