是否可以跳过捕获组中正则表达式中的几个字符?我正在使用.NET正则表达式,但这无关紧要。基本上,我正在寻找的是:[随机文本] AB-123 [随机文本]并且我需要不带连字符的情况下捕获“ AB123”。我知道AB是2或3个大写字符,而123是2或3个数字,但这不是很难的部分。困难的部分(至少对我而言)是跳过连字符。我想我可以分别捕获它们,然后在代码中将它们连接起来,但是我希望我有一个更优雅的,仅用于正则表达式的解决方案。有什么建议么?
3 回答
拉丁的传说
TA贡献1789条经验 获得超8个赞
您的断言,如果没有分组再加上它,就不可能做到这一点是正确的。
您也可以像Jeff-Hillman一样,只在事发之后剔除坏角色。
这里要注意的重要一点是,您“不要对所有内容都使用正则表达式”。
正则表达式是为不太复杂的问题而设计的,用于不太复杂的解决方案,您不应该对所有内容都使用“哦,我们将使用正则表达式”,并且您不应习惯于认为自己可以通过简单的方法解决问题。一步式正则表达式。
当存在可行的可行方法时,请务必使用它。
如果您恰巧需要在代码体中返回多个匹配项,则可以使用另一种想法,即寻找基于语言“回调”的正则表达式,该表达式允许将任何匹配/找到的组传递给可以进行内联替换的函数调用。(在执行regexp时特别方便)。
不知道它如何在.Net中工作,但是在php中您会做类似的事情(不是精确的代码)
function strip_reverse( $a )
{
$a = preg_replace("/-/", "", $a );
return reverse($a);
}
$b = preg_replace_callback( "/(AB[-]?cde)/" , 'strip_reverse' , "Hello World AB-cde" ;
- 3 回答
- 0 关注
- 1057 浏览
添加回答
举报
0/150
提交
取消