如何提取带分隔符的指定字段并保留首尾分隔符?
如何提取带分隔符的指定字段并保留首尾分隔符?
嘿,这问题我熟!你已经找对方向了,稍微调整下正则表达式,就能直接捕获到带前后|的|guffy|啦~
你现在用的正则^([^\|]*\|){3}(?<guffy>[^\|]*)已经能精准定位到guffy的内容,但没把前后的管道符包含进捕获组里。咱们把它改成这样就行:
^([^\|]*\|){2}(?<guffy>\|[^\|]*\|)
给你拆解下这个修改的逻辑:
^([^\|]*\|){2}:这部分用来跳过前两个带管道符的字段(也就是|scooby|和|pluto|),停在第三个字段的开头|之前,用非捕获组避免干扰最终的目标结果(?<guffy>\|[^\|]*\|):这个命名捕获组直接把|guffy|整个匹配并捕获下来,正好就是你需要的结果
当然,如果你临时想凑活下,也可以先用你原来的正则捕获到guffy,再在代码里手动拼接前后的|(比如写成|${guffy}|),不过用正则一步到位肯定更省心嘛!
备注:内容来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

