当前位置:  开发笔记 > 编程语言 > 正文

跳过前nn个字符,其余则使用RegEx

如何解决《跳过前nn个字符,其余则使用RegEx》经验,为你挑选了1个好方法。

我看到了一个使用\ K 的问题,该问题存在于Notepad ++ / pcre / PHP(重置匹配起始点)中。但是,在“掌握正则表达式”或“正则表达式食谱”中找不到此选项或其等效项。

如何跳过指定数量的字符?我使用Expresso在^。{15}上执行了替换操作,从而消除了前15个。



1> Wiktor Strib..:

在PCRE中,Oniguruma,Boost,ICU regex调味品\K是一种回溯构造

此构造有一种特殊形式,称为\K(从Perl 5.10.0开始可用),它使regex引擎“保留”在之前匹配的所有内容\K,而不将其包括在中$&这有效地提供了变长后向。采用\K的另一种环视断言内部允许的,但行为目前还没有很好的定义。

在.NET中,\K由于后面具有可变宽度(或无限宽度),因此是不必要的。

(?<=subexpression)是肯定的断言;也就是说,当前位置之前的一个或多个字符必须与subexpression匹配。

要匹配前15个任意字符后的数字,请使用

(?<=^.{15})\d

观看演示

不要忘记使点与换行符匹配,您需要使用RegexOptions.Singleline

来自rexegg.com的注释:

.NET(C#,VB.NET等)和Matthew Barnett的python 正则表达式模块是唯一支持无限宽的后向编程语言。

另外,作为奖励:您当前的要求并不意味着您依赖于后面无限的宽度。只需使用捕获组:

var s = Regex.Replace("1234567890123456", @"^(.{15})\d", "$1*");

最后的6将被替换,*开始的将被使用$1反向引用恢复到结果字符串中。

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有