Regex 正则表达式:按递增顺序排列的3位数字和相同的数字

Regex 正则表达式:按递增顺序排列的3位数字和相同的数字,regex,Regex,我想检查序列的最后3位是否与前面的3个数字匹配,并且这3个数字中的元素值必须使用正则表达式增加 例如: 0143123123匹配为123 0143321321不匹配,因为这3个数字中的元素不能增加 我试着用这个表达: (\d)(?!\1)(\d)(?!\1)(?!\2)(\d)\1\2\3 但是我只得到序列的最后3位与前面3位匹配,不考虑增加,我想您可以使用: (012|123|234|345|456|567|678|789)\1$ 请参阅联机 (012 | 123 | 234 | 3

我想检查序列的最后3位是否与前面的3个数字匹配,并且这3个数字中的元素值必须使用正则表达式增加

例如:

  • 0143123123匹配为123
  • 0143321321不匹配,因为这3个数字中的元素不能增加
我试着用这个表达:

(\d)(?!\1)(\d)(?!\1)(?!\2)(\d)\1\2\3
但是我只得到序列的最后3位与前面3位匹配,不考虑增加,我想您可以使用:

(012|123|234|345|456|567|678|789)\1$
请参阅联机

  • (012 | 123 | 234 | 345 | 456 | 567 | 678 | 789)
    -匹配这些递增序列中的任何一个
  • \1
    -与第一个捕获组的相同序列相匹配的反向引用
  • $
    -结束字符串锚定
你的对手将是第一个捕获组

注意:如果您还想考虑诸如
013 | 014…245 | 246
等备选方案,您必须将这些方案包括在这些备选方案中。总共有120个备选方案。。。不太漂亮:

(012|013|014|015|016|017|018|019|023|024|025|026|027|028|029|034|035|036|037|038|039|045|046|047|048|049|056|057|058|059|067|068|069|078|079|089|123|124|125|126|127|128|129|134|135|136|137|138|139|145|146|147|148|149|156|157|158|159|167|168|169|178|179|189|234|235|236|237|238|239|245|246|247|248|249|256|257|258|259|267|268|269|278|279|289|345|346|347124712474 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 124; 789)\1$


也许你的应用程序有一种方法可以对捕获组进行后期处理,作为更好的选择。

不可能与正则表达式进行大于数字的比较。但是,你可以使用正则表达式捕获组提取数字,将其转换为整数,并对整数值进行比较。你使用什么语言?@PeterThoeny,从技术上讲,这是不可能的多亏了raku regexes:-)
'014312123'~~m/@Julio:太好了!您可以使用多种语言(如Perl和JavaScript)在正则表达式搜索和替换的替换部分执行函数/代码。因此我的问题是赞恩使用什么语言。