【问题标题】:Regex PatternRepository pattern on BlackBerry 5 - how to ignore caseBlackBerry 5 上的 Regex Pattern Repository 模式 - 如何忽略大小写
【发布时间】:2011-03-08 09:32:08
【问题描述】:

我希望这个标题有意义 - 我需要在 BlackBerry 5 上进行不区分大小写的正则表达式匹配。

我有一个正则表达式定义为:

    public static final String SMS_REG_EXP = "(?i)[(htp:/w\\.)]*cobiinteractive\\.com/[\\w|\\%]+";

它旨在匹配“cobiinteractive.com/”后跟一些文本。前面的(htp:w.)就在那里,因为在我的设备上我需要覆盖手机应用的内部链接识别(无耻的黑客攻击)。

应用程序在启动时加载。我的想法是我想从短信和电子邮件中获取指向我网站的链接,并使用我的应用程序处理它们。

我将它添加到 PatternRepository 使用:

    PatternRepository.addPattern(
        ApplicationDescriptor.currentApplicationDescriptor(),
        GlobalConstants.SMS_REG_EXP,
        PatternRepository.PATTERN_TYPE_REGULAR_EXPRESSION,
        applicationMenu);
  • 在 os 4.5 / 4.7 模拟器和 Curve 8900 设备(运行 4.5), 这行得通。
  • 在 os 5 模拟器和 Bold 9700 我测试过,应用编译失败 模式与 IllegalArgumentException("无法识别 (?") 之后的字符

我也尝试(天真地)将模式设置为“/rockstar/i”,但它只匹配确切的字符串——这可能是正确的方向,但如果是这样,我不知道如何实现它在 BB 上。


如何修改我的正则表达式,以便使用上述 PatternRepository 获取不区分大小写的模式?

PS:“正确”的方法是使用 [Cc][Oo][Bb][Ii]2... 等模式吗?这对于短字符串来说是可以的,但如果可能的话,我希望有一个更通用的解决方案?

【问题讨论】:

    标签: regex blackberry pattern-matching


    【解决方案1】:

    这不是一般问题的真正解决方案,但这种解决方法简单、安全且高效:

    由于您在此处处理 URL,它们不区分大小写...
    (不管我们写的是 google.com 还是 GooGLE.COM 之类的)

    最简单的解决方案(我们都喜欢KISS_principle)是首先在输入上做一个小写(或大写,如果你喜欢),然后做一个正则表达式匹配,不管它是否区分大小写因为我们肯定知道我们在处理什么。

    【讨论】:

    • 感谢您的建议,但是,在这种情况下,这是不可能的。我指的是添加到 PatternRepository 的特定案例,它由 BlackBerry OS 处理,以识别内置消息传递应用程序中的字符串。因此,在 PatternRepository 识别它之前,我不知道有任何操作字符串的方法——这就是我的问题。理查德
    【解决方案2】:

    由于没有其他人回答过这个与PatternRepository 课程相关的问题,我将自行回​​答以便关闭它。

    一种方法是使用如下模式:[Cc][Oo][Bb][Ii]2[Nn][Tt][Ee][Rr][Aa][Cc][Tt] [Ii][Vv][Ee]... 等对于字符串中的每个字母,您放置 2 个选项。幸好我的字符串很短。

    这不是一个优雅的解决方案,但它确实有效。不幸的是,我不知道如何修改传递给PatternRepository 的字符串,我认为使用(?i) 修饰符时的崩溃是BB 中的一个错误。

    【讨论】:

    • 投反对票,有什么要补充的吗?
    【解决方案3】:

    使用 jakarta 正则表达式库的端口: https://code.google.com/p/regexp-me/

    如果你使用 unicode 支持,它会吃掉内存, 但如果你只是想要不区分大小写的匹配, 您只需在编译正则表达式时传递 RE.MATCH_CASEINDEPENDENT 标志。

    new RE("yourCaseInsensitivePattern", RE.MATCH_CASEINDEPENDENT | OTHER_FLAGS)

    【讨论】:

      猜你喜欢
      • 2010-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-24
      • 2012-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多