You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则表达式匹配字符串中间部分并完成指定替换?

正则替换解决方案:保留首尾单词,替换中间内容

直接用下面的正则表达式就能解决你的问题:

匹配正则:^(\S+)\s.*\s(\S+)$
替换模板:$1 router1 $2

为什么之前的写法不行?

你之前只单独匹配了首尾单词,但没把中间内容纳入匹配范围,替换时中间内容会原封不动保留。正确思路是把整个字符串拆成首单词、中间所有内容、尾单词三部分,通过正则一次性匹配这三部分,再用替换模板替换掉中间部分。

正则各部分解释

  • ^(\S+):匹配字符串开头的第一个非空白单词(比如tunnel4、gig1/0/1),存入分组1(对应替换模板里的$1)
  • \s.*\s:匹配第一个空格到最后一个空格之间的所有内容(不管中间有多少单词或字符),这部分就是要替换掉的内容
  • (\S+)$:匹配字符串结尾的最后一个非空白单词(比如status、bandwidth),存入分组2(对应$2)

示例验证

拿你的测试数据举例:

  • 原字符串:tunnel4 connection to router 1 status
  • 正则匹配后,分组1是tunnel4,分组2是status,中间的connection to router 1被替换成router1,最终输出:tunnel4 router1 status

如果需要兼容只有两个单词的字符串(比如hello world),可以把正则调整为:
^(\S+)\s*(.*?)\s*(\S+)$
替换模板用$1 router1 $3,替换后会得到hello router1 world。

内容的提问来源于stack exchange,提问作者Daniel Flick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 06:10:43