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

求助:如何提取字符串中#####之后、末尾/之前的内容?

解决方案

你之前用的正则/[^#####]*[^\/]/逻辑不对:[^#####]是字符集,里面重复的#没有意义,实际作用是匹配除#之外的任意字符,完全不符合你要提取#####后内容的需求,所以无法得到预期结果。

下面给你几个可行的正则方案,按需选择:

方案1:正向预查匹配(无需分组)

正则表达式:

(?<=#####).*(?=/)
  • 解释:
    • (?<=#####):正向预查,确保目标内容前面是连续5个#
    • .*:匹配任意非换行字符,直到遇到结尾的/
    • (?=/):正向预查,确保目标内容后面是/,不会把/包含到结果里

方案2:捕获分组(适合支持分组的工具/语言)

正则表达式:

#####(.*)/
  • 解释:
    • 先匹配固定的#####,再用(.*)捕获后面直到/的所有内容,最后匹配结尾的/
    • 使用时直接提取第1个捕获组的内容即可

实际使用示例

比如用sed命令处理文本文件:

sed 's/.*#####\(.*\)\/$/\1/' input.txt

或者用Python代码处理字符串列表:

import re

strings = [
    "some-text-123123#####abcdefg/",
    "some-STRING-413123#####qwer123t/",
    "some-STRING-413123#####456zxcv/"
]
pattern = re.compile(r"(?<=#####).*(?=/)")
for s in strings:
    print(pattern.search(s).group())

执行后就能得到你想要的结果:

abcdefg
qwer123t
456zxcv

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 00:25:19