【问题标题】:DXL - Regex for matches() that only matches whole wordDXL - match() 的正则表达式,仅匹配整个单词
【发布时间】:2018-03-13 23:15:32
【问题描述】:

我正在使用 dxl,我有两个字符串,其中字符串 a 是新行分隔的 ID 集合,字符串 b 是我在字符串 a 中查找的特定 ID。

坏情况:

字符串 a = "ID12\nID2\nID3"

字符串 b = "ID1"

matches(b,a) 在这种情况下会错误地返回 true,因为没有确切的“ID1”ID,所以我希望它返回 false。什么是正确的正则表达式 DXL 将支持这样对于这种返回 false 的坏情况?

【问题讨论】:

    标签: regex ibm-doors


    【解决方案1】:
    string a = "ID12\nID2\nID3"
    
    string b = "^ID1$"
    
    print matches(b,a)
    

    以上将正确返回 false - 对于您的具体示例,您需要断言 ID1 是从行的开始 (^) 到结束 ($) 的完整字符串。

    DXL 正则表达式中没有 MULTILINE 标志; \A 和 \Z 不是 DXL 的有效控制字符。

    【讨论】:

      【解决方案2】:

      使用开始和结束锚点:

      \AID1\Z
      

      这些锚点不同于^$,当使用MULTILINE 标志时,它们也将匹配 的开始和结束。

      【讨论】:

      • 创建正则表达式:Regexp b = regexp2 "\AID1\Z" 我收到了“格式错误的令牌”错误。
      • @Cgrillo 尝试用反斜杠转义反斜杠
      猜你喜欢
      • 2017-07-08
      • 2010-11-15
      • 2012-01-06
      相关资源
      最近更新 更多