gro*_*ber 7 regex match junction raku
只是为了它,我试图用raku 中的运算符(在该页面上搜索)匹配正则表达式的连接点。m// Explicit topic match
在perl6REPL 中:
> any('a','b') ~~ m/./
False
Run Code Online (Sandbox Code Playgroud)
之后,无论我怎么称呼,m//我都会收到一个不可变的匹配投诉:
> 'x' ~~ m/./
Cannot modify an immutable Match (?a?)
in block <unit> at <unknown file> line 1
Run Code Online (Sandbox Code Playgroud)
题
这里的幕后发生了什么?
讨论
问题似乎源于将$/ 特殊变量设置为结点
any(?a?, ?b?)
Run Code Online (Sandbox Code Playgroud)
在路口比赛之后,似乎是?a?在路口引起了投诉。
只要我做任何改变$/其他事情的事情,功能就会恢复:
> $/=Any
(Any)
> 'x' ~~ m/./
?x?
Run Code Online (Sandbox Code Playgroud)
或者
> 'x' ~~ /./
?x?
> 'x' ~~ m/./
?x?
Run Code Online (Sandbox Code Playgroud)
(所以先匹配//,以便改变$/,然后匹配m//)。
澄清
我不想“实现”超出问题要求的任何东西:我只是想了解这种行为。
编辑
出于交叉引用的目的,这现在也是一个rakudo github 问题,正如@jjmerelo 所建议的那样。
我认为,关于比赛是否应该返回False或True解决的附带问题,在@raiph 的评论中。
另一方面,接收错误的主要问题immutable Match似乎是一个错误,至少在我的系统上修复了它。
所以问题是(根据提交消息)正则表达式匹配对象不应该是连接。