我正在尝试在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语法无效或不受支持:(?<
也许有人知道某个伎俩? :/或是不可能使用它们?
答案 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)
)