ruby – 如何获得导致reg表达式不匹配的第一个字符
发布时间:2020-12-17 03:29:22 所属栏目:百科 来源:网络整理
导读:我们有一个非常复杂的正则表达式来检查字符串结构. 我想知道是否有一种简单的方法可以找出字符串中哪个字符导致reg表达式不匹配. 例如, string.match(reg_exp).get_position_which_fails 基本上,这个想法是当它放弃时如何获得状态机的“位置”. 以下是正则表
我们有一个非常复杂的正则表达式来检查字符串结构.
我想知道是否有一种简单的方法可以找出字符串中哪个字符导致reg表达式不匹配. 例如, string.match(reg_exp).get_position_which_fails 基本上,这个想法是当它放弃时如何获得状态机的“位置”. 以下是正则表达式的示例: %q^[^p{Cc}p{Z}]([^p{Cc}p{Zl}p{Zp}]{0,253}[^p{Cc}p{Z}])?$ 解决方法
最简洁的答案是不.
长的答案是正则表达式是一个复杂的有限状态机,可能处于试图同时匹配几个不同的可能路径的状态.如果不构造允许部分匹配的正则表达式,则无法从正则表达式中获取部分匹配. 如果要允许部分匹配,请重新设计表达式以支持它们,或者使用更手动的方法编写逐步执行字符串的解析器. 如果您有一个特别难以解决的表达式,您可以尝试使用Ragel自动生成其中一个. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |