我要配[
在 Pharo 6 中的正则表达式中。
这工作正常:
| matcher |
matcher := RxMatcher forString: '\['.
matcher matches: '['. "produces true"
但是,我看不到如何在
[]
中执行此操作.都没有 [[]
也不是 [\[]
工作。我可以匹配结束
]
很好用 []]
,但我不知道如何使用 [
.
最佳答案
不支持
查看RxParser>>atom
的执行情况和 RxParser>>characterSet
,根本不支持范围集中的转义字符。
根据文档,其他“特殊”字符 (^,-,]) 只能由集合中的特定位置处理,因此不会触发不同分支的解析。
解决方法
一种解决方法是将范围集拆分为 or-ed 组,例如
[[a-z]
进入
(\[|[a-z])
更好的工具
请注意,Pharo 用户通常被指示使用 PetitParser 而不是正则表达式进行文本解析,因为 PetitParser 更易于管理和调试。至少可以说是一种更面向对象的正则表达式。
关于regex - 如何在 Smalltalk 正则表达式中匹配 [ ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45824000/