我们有一个非常复杂的正则表达式来检查字符串结构。
我想知道是否有一种简单的方法可以找出字符串中哪个字符导致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}])?$
答案 0 :(得分:7)
简短的回答是:否。
长的答案是正则表达式是一个复杂的有限状态机,可能处于试图同时匹配几个不同的可能路径的状态。如果没有构建允许部分匹配的正则表达式,就无法从正则表达式中获得部分匹配。
如果要允许部分匹配,请重新设计表达式以支持它们,或者使用更手动的方法编写一个遍历字符串的解析器。
如果您有一个特别难以解决的表达式,您可以尝试使用Ragel自动生成其中一个。