golang吧 关注:6,543贴子:14,774
  • 2回复贴,共1

正则部分匹配字符串

只看楼主收藏回复

背景****************************************************************************************
假设大模型生成某个回答的全文是这样的
xxx yyy^[1][19]^zzz aaa
需要在我控制的Go服务删除符合正则表达式 \^(\[\d+])+\^ 的内容,再返回给网页前端,即期望结果是
xxx yyyzzz aaa
但大模型的实际输出是逐token的。比如返回给我的Go程序时,有可能是这样的(每行代表程序获取的一次输入):
xxx
yyy^
[1
][
19]
^zzz
aaa
我的想法****************************************************************************************
xxx 完全不符合正则表达式 ,直接返回给客户端
yyy^ 后缀^ 部分符合正则表达式,缓存起来,返回空字符串给客户端
[1 与缓存拼接,yyy^[1 "部分符合正则表达式",缓存起来,返回空字符串给客户端
][ 同上
19] 同上
^zzz 与缓存拼接,yyy^[1][19]^zzz "完全符合正则表达式",清空缓存,返回yyyzzz给客户端
aaa 完全不符合正则表达式 ,直接返回给客户端
最终客户端逐个拼接起来,就是期望的全文xxx yyyzzz aaa。
求助****************************************************************************************
如何实现想法中的"部分符合正则表达式"?
手动枚举正则表达式来匹配的行为不太合理,因为实在太复杂且容易出错。比如 \^$|\^\[$|\^\[\d+$|\^(\[\d+])+$|\^(\[\d+])*\[$|\^(\[\d+])*\[\d+$


IP属地:北京1楼2025-03-03 16:22回复
    就不能写的工整一点吗看不懂你在说什么


    IP属地:广东来自Android客户端2楼2025-03-03 19:33
    回复