【问题标题】:Create Regular Expression to Match Custom Format创建正则表达式以匹配自定义格式
【发布时间】:2010-11-10 14:04:25
【问题描述】:

我正在尝试创建一个正则表达式,当字符串以 1 个或多个字母字符开头后跟正好 1 个 ? 并以 1 个或多个字母字符结尾时匹配

到目前为止我所拥有的是

[A-Za-z]+\?{1}[A-Za-z]+

但这会导致我的程序崩溃。有任何想法吗?感谢您的任何回复。

更新

这是一个例外:

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因: '不能进行正则匹配,原因:(不能打开模式 U_REGEX_RULE_SYNTAX (string fe?ing, pattern [A-Za-z]+?{1}[A-Za-z]+, case 0, canon 0))'

似乎忽略了 ? 的转义字符

【问题讨论】:

  • 崩溃的症状是什么,请发布更多调用它的代码。正则表达式看起来不错(尽管您不需要 {1} 只是把 \? 表示匹配文字?)。您是否尝试过使用更简单的正则表达式来检查不是调用代码有问题?
  • 如果我更换 ?使用 1 那么正则表达式可以正常工作。它会正确匹配像 fas1ing 这样的字符串。

标签: objective-c regex


【解决方案1】:

看起来确实不错。也许去掉“{1}”,但当我尝试它时它可以与 Perl 表达式一起使用。

尝试这样做:如果你把“?”进入一个角色类,看看你是否能摆脱崩溃。

[A-Za-z]+[?][A-Za-z]+

【讨论】:

    【解决方案2】:

    尝试使用 2 个反斜杠。

    @"[A-Za-z]+\\?[A-Za-z]+"
    

    一个反斜杠将编译器的\ 转义为字符串文字,另一个反斜杠将? 转义为正则表达式引擎。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-26
      • 2018-07-13
      相关资源
      最近更新 更多