douchen9855 2018-01-05 21:01
浏览 52
已采纳

regexp Go lang中的错误

I'm trying to use this regular expressions in Go lang:

~((?<=^[^\s])|(?<=\s[^\s]))\s(?=[^\s](\s|$))~

{(c|d|e|i|l|n|o|p|r|t|z)\1+}

{( |a|b|d|[f-h]|i|[j-k]|m|q|s|[u-y])\1+}

{(c|d|e|i|l|n|o|p|r|t|z)\1+}

{( |a|b|[f-h]|i|[j-k]|m|q|s|[u-y])\1+}

{(si|sa|za|ja|to)\1+}

and in everyone of those i get this error:

panic: regexp: Compile(~((?<=^[^\s])|(?<=\s[^\s]))\s(?=[^\s](\s|$))~): error parsing regexp: invalid or unsupported Perl syntax: (?<

Maybe there is a trick know for someone? :/ or is it impossible to use them?

  • 写回答

1条回答 默认 最新

  • doujujian0052 2018-01-05 21:17
    关注

    If no lookbehinds supported, use a workaround like this:

    ((^|\s)\S)(\s)(?=\S(\s|$))

    where:

    Capture group 1 contains what's to be written back in place of the
    lookbehind.

    Capture group 3 is the actual whitespace in question.
    It's in a capture group just to separate it from the entire match.

    Summary: Group 1 + Group 3 = entire match.

    Expanded:

     #  (                             # (1 start)
     #       (?<= ^ [^\s] )
     #    |  (?<= \s [^\s] )
     #  )                             # (1 end)
    
     (                             # (1 start)
          ( ^ | \s )                    # (2)
          \S 
     )                             # (1 end)
     ( \s )                        # (3)
     (?=
          \S 
          ( \s | $ )                    # (4)
     )
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊