代码之家  ›  专栏  ›  技术社区  ›  Wilfred Hughes AntuanSoft

在Smalltalk正则表达式中如何匹配[呢?

  •  5
  • Wilfred Hughes AntuanSoft  · 技术社区  · 7 年前

    [

    | matcher |
    matcher := RxMatcher forString: '\['.
    matcher matches: '['. "produces true"
    

    [] . 也不 [[] [\[] 工作

    ] 很好 []] .

    2 回复  |  直到 7 年前
        1
  •  5
  •   Peter Uhnak    7 年前

    不支持

    RxParser>>atom RxParser>>characterSet

    根据文档,其他“特殊”字符(^,-,])只能通过集中的特定位置来处理,因此不会触发对不同分支的解析。

    [[a-z]
    

    进入

    (\[|[a-z])
    

    更好的工具

    注意,Pharo用户通常被指示使用PetitParser而不是正则表达式进行文本解析,因为PetitParser更易于管理和调试。至少可以说,一种更面向对象的方法采用了正则表达式。

        2
  •  1
  •   ben rudgers    7 年前

    我添加了一个与GNU Smalltalk相关的答案,因为这个问题标有[Smalltalk],因此很可能出现在互联网搜索结果中。

    在GNU Smalltalk中, regexs have Perl like synta x、 还有角色 [ 可以作为 \[

    st> '[ac' =~ '\[[ab]' 
    MatchingRegexResults:'[a'
    st> '[bc' =~ '\[[ab]' 
    MatchingRegexResults:'[b'
    

    逃生在一定范围内也有效:

    st> '[bc' =~ '[\[b]' 
    MatchingRegexResults:'['
    

    =~ 可以与正则表达式一起传递给字符串。