在zsh中使用Perl一行程序来匹配汉字真的让我很困惑。我不能得到\p{script=Han}匹配汉字,但P{script=Han}匹配。
任务:--我需要改变这一点:
一
<lb/> 二对此:
<tag ref="一二">一
<lb/> 二</tag>这两个汉字之间可能有不同数量的标签、换行符、空格、制表符、字母数字字符、数字等。我相信最有效率和最有力的方法是寻找一些不是汉字的东西。
我的尝试解决方案:
perl -0777 -pi -e 's/(一)(\P{script=Han}*?)(二)/<tag ref="$1$3">$2<\/tag>/g'当应用于上述示例时,这将产生预期的效果。
问题:我遇到的问题是\P{script=Han} (或\p{^script=Han})也匹配汉字。
当我试图匹配\p{script=Han}时,正则表达式不匹配,尽管它是一个充满汉字的文件。当尝试匹配\P{script=Han}时,正则表达式匹配文件中的每个字符。
我也不知道原因。
这是一个问题,因为在这种情况下,输出不像预期的那样:
一
<lb/> 三二变成了
<tag ref="一二">一
<lb/> 三二</tag>我不希望这种情况完全匹配--仅仅是一和二仅由非汉字的字符分隔的情况。
有人能告诉我我做错了什么吗?或者建议一个解决办法?谢谢!
发布于 2022-11-11 22:42:08
https://stackoverflow.com/questions/74404610
复制相似问题