如何使用正则表达式匹配字符串中的第n个出现
设置测试字符串为 {stackoverflowa 是一个最佳的解决方案查找网站 stackoverflowb 是一个最佳的解决方案查找网站 stackoverflowc 是一个 最佳的解决方案查找网站 stackoverflowd 是一个最佳的解决方案查找网站 stackoverflowe 是一个最佳的解决方案查找网站}
regexp -all {stackoverflow} $test
上面的代码会输出“5”。
regexp {stackoverflow} $test
以上代码会返回stackoverflow的结果,它匹配第一个stackoverflow(即stackoverflowa)。
我的要求是要匹配字符串中的第5个stackoverflow(即stackoverflowe)。
请有经验的人解答我的问题,谢谢。
接下来还有另一个问题。
/(.*?(stackoverflow\S*)){5}/
的东西,在捕获组2中回答。不知道tcl是否支持这样的语法。 - user557597regexp {(.*?(stackoverflow\S*)){5}} $test m sm ssm
。这将把“stackoverflow”的第五个出现(省略“e”)放入子子匹配变量(调用中的ssm
)中。 - Peter Lewerin