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

如何在Elixir中获取空字节两侧各3个字符(含空字节)?

解决方法

要提取<<0>>两侧各3个字符(包含该标记本身),关键是精准匹配紧邻<<0>>的前后3个字符——你之前的正则里的.*?<<0>>会匹配非紧邻的内容,导致结果不符合预期。

精准匹配(前后字符足够的场景)

如果能确定<<0>>前后至少有3个字符,直接用以下正则即可:

str = "hello this isa<<0>>string."
# 匹配紧邻<<0>>的前3个字符、标记本身、后3个字符
Regex.run(~r/.{3}<<0>>.{3}/, str) |> hd()
# 输出:"isa<<0>>str"

兼容边界情况(前后字符不足3个的场景)

如果需要处理<<0>>位于字符串开头/结尾、前后字符不足3个的情况,可以调整正则:

str1 = "a<<0>>string."
str2 = "hello this isa<<0>>ab"
# 匹配最多3个前置字符、标记本身、最多3个后置字符
Regex.run(~r/.{0,3}<<0>>.{0,3}/, str1) |> hd()
# 输出:"a<<0>>str"
Regex.run(~r/.{0,3}<<0>>.{0,3}/, str2) |> hd()
# 输出:"isa<<0>>ab"

分组提取(灵活拼接结果)

如果需要单独获取前后的3字符组,也可以用分组捕获后手动拼接:

str = "hello this isa<<0>>string."
[_, prefix, suffix] = Regex.run(~r/(?<=.{0,2})(.{3})<<0>>(.{3})/, str)
result = prefix <> "<<0>>" <> suffix
# result 为 "isa<<0>>str"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 15:12:08