加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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自动生成其中一个.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读