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

正则表达式以跳过捕获组中的字符

如何解决《正则表达式以跳过捕获组中的字符》经验,为你挑选了2个好方法。

是否可以在正则表达式中跳过捕获组中的几个字符?我正在使用.NET正则表达式,但这无关紧要.

基本上,我要找的是:

[随机文字] AB-123 [随机文字]

我需要捕捉'AB123',没有连字符.

我知道AB是2或3个大写字符,123是2或3位数,但这不是困难的部分.困难的部分(至少对我来说)是跳过连字符.

我想我可以单独捕获它们然后在代码中连接它们,但我希望我有一个更优雅的,仅正则表达式的解决方案.

有什么建议?



1> Tomalak..:

简而言之:你做不到.匹配总是连续的,即使它包含零宽度断言的东西,如果你想要到达后一个字符,也无法匹配下一个字符.


真正.但是环顾不会*匹配任何东西.位置正则表达式引擎在sting中的位置不会改变.

2> Jeff Hillman..:

实际上没有办法创建表达式,使匹配的文本与源文本中找到的文本不同.您需要在单独的步骤中删除连字符,方法是分别匹配第一个和第二个部分并连接两个组:

match = Regex.Match( text, "([A-B]{2,3})-([0-9]{2,3})" );
matchedText = string.Format( "{0}{1}", 
    match.Groups.Item(1).Value, 
    match.Groups.Item(2).Value );

或者通过在与匹配过程分开的步骤中删除连字符:

match = Regex.Match( text, "[A-B]{2,3}-[0-9]{2,3}" );
matchedText = match.Value.Replace( "-", "" );


还有`match.Result("$ 1 $ 2")`
推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有