RE检查应按特定顺序出现的某些字符的不正确顺序

时间:2016-11-16 06:15:44

标签: regex python-2.7

概述:我需要一个正则表达式(RE),它将查找给定有序集中的字符,这些字符无序地出现在目标字符串中。这是布局:

我有以下有序多字符的字符或字符对(multiset,因为第一个和最后一个元素是相同的),每个元素在目标字符串中最多可以按照集合中给出的顺序出现一次: ---例外:^可以连续出现两次,单v(未与.配对)可以出现在任一端或两端。 (请注意,|字符在集合中不是,但通常会出现在目标字符串中。)

# Ordered multiset of characters that should appear in target string

{v, v., <, .\, \, \., ^, ./, /, /., >, .v, v}  

以下是出错的典型目标字符串:

# Typical target string

v.A|<B2|\T|E^|D|E^|A/.|B2>

请注意,字符串中出现执行的有序多集中的字符按照集合中给出的顺序出现。现在,用户将输入这些字符串(间接通过GUI),并且用户可能会犯错误。例如,他/她可以省略一个|字符(我已经有了RE),或者他/他可以按顺序输入有序集中的字符这是我在这里询问的情况。这是一个类似于第一个字符串的字符串,但是有一个订单错误:

# Target string with an error

v.A|<B2|\T|E^|D|E^|A>|B2/.

请注意,字符串右端附近的>/.字符显示为乱序。 (另请注意,^有效地出现两次。)我需要构建一个RE,用于测试给定字符串中有序集合中的项目是否无序。以下是我在工作中遇到的一些例子:

# Three "real life" target strings

1.    <A|vE2|B|D/|A>  
2.    <E|C^|\T|C|E>|T2/  
3.    vC2|\G|<L|B|L>|Gv 

第一个字符串有一个订单错误,第二个字符串有两个,第三个字符串有一个。 需要注意的一些事项: 1)对于有多个错误的字符串,从技术上讲,我只需要知道该字符串至少有一个错误,但知道所有错误都是奖励; 2)单个v(不是v..v)只能出现在字符串的两端或两端,如上面的第三个示例所示; 3)经常出现简单的目标字符串,例如<A|B|A/|B|,只有一个或没有字符集,并且RE必须能够将这些字符串处理为有效案件,即不匹配。

我已经有一个RE有三个替代方案可以测试其他类型的错误,所以我在这里寻求的RE将成为另一种选择。我怀疑我将不得不在其自己的替代方案中处理单个v案例而在另一个案例中处理其他设置项目。 (我也意识到备选方案的顺序也很重要。)

所以,对此有任何帮助将不胜感激。我已经尝试了很多从简单到复杂的RE,但是它已经无处可去,但是在兔子洞里,现在我很困惑。

0 个答案:

没有答案