regexp Go lang出错

时间:2018-01-05 21:01:08

标签: regex go functional-programming

我正在尝试在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+}

并且在每个人中我都会收到此错误:

  

恐慌:regexp:编译(~((?<=^[^\s])|(?<=\s[^\s]))\s(?=[^\s](\s|$))~):解析regexp时出错:Perl语法无效或不受支持:(?<

也许有人知道某个伎俩? :/或是不可能使用它们?

1 个答案:

答案 0 :(得分:0)

如果不支持lookbehinds,请使用以下解决方法:

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

其中:

捕获组1包含要写回的内容而不是中文 向后看。

捕获组3是有问题的实际空格 它只是在一个捕获组中将它与整个匹配分开。

摘要:第1组+第3组=完整匹配。

扩展:

 #  (                             # (1 start)
 #       (?<= ^ [^\s] )
 #    |  (?<= \s [^\s] )
 #  )                             # (1 end)

 (                             # (1 start)
      ( ^ | \s )                    # (2)
      \S 
 )                             # (1 end)
 ( \s )                        # (3)
 (?=
      \S 
      ( \s | $ )                    # (4)
 )