正则表达式在缅甸文本中插入零宽度空格

时间:2013-04-12 10:59:32

标签: regex line-breaks

向所有在这里贡献自己的时间和脑力的人致敬。我正在使用缅甸语文本,资源很少。

为了在Unicode中的Unicode文本列中使换行工作正常,我想编译一个正则表达式,它将在以下上下文中插入零宽度空间(ZWSP)[u \ 200B]:

在unicode字符运行的任何示例之前立即插入ZWSP [\ u1000- \ u1021]

除非

  • 该字符后跟[\ u103A]

  • 紧接在前的字符是相同范围的unicode字符[\ u1000- \ u1021]或[\ u1039]之一,(可能还有一两个我可能需要稍后添加的字符)。

有人可以帮忙吗?我将在UltraEdit中使用大量文本进行查找/替换。

1 个答案:

答案 0 :(得分:0)

Perl正则表达式搜索字符串

([^\x{1000}-\x{1021}\x{1039}])([\x{1000}-\x{1021}])(?!\x{103A})

与替换字符串一起使用

\1\x{200B}\2

符合您的所有要求。

搜索字符串的说明:

([^\x{1000}-\x{1021}\x{1039}])匹配任何不具有十六进制范围1000到1021的代码值的字符,并且不是具有十六进制代码值1039的字符,并且标记此字符以通过替换中的表达式\1进行反向引用必须保留此字符的字符串。

([\x{1000}-\x{1021}])匹配代码值在0x1000到0x1021范围内的任何字符,并将此字符标记为替换字符串中的表达式\2的后引用,因为此字符也必须保留。

(?!\x{103A})是一个负前瞻表达式,用于检查下一个字符是否没有十六进制代码值103A。

替换字符串的说明:

\1引用搜索字符串中第一个标记组找到的字符。

\x{200B}指定要插入的零宽度空间。

\2引用搜索字符串中第二个标记组找到的字符。