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

Regex 正则表达式在缅甸文中插入零宽度空格,regex,line-breaks,Regex,Line Breaks,向所有在这里贡献时间和脑力的人致敬。我正在处理缅甸文本,但资源很少 为了使Unicode中的Unicode文本列中的断线工作正常,我想编译一个正则表达式,它将在以下上下文中插入零宽度空间(ZWSP)[u\200B]: 在unicode字符[\u1000-\u1021]的随机字符示例之前插入ZWSP 除非 字符后跟[\u103A] 或 前一个字符是相同范围的unicode字符[\u1000-\u1021]或[\u1039],(可能还有一个或两个我以后可能需要添加的其他字符) 有人能帮忙吗?

向所有在这里贡献时间和脑力的人致敬。我正在处理缅甸文本,但资源很少

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

在unicode字符[\u1000-\u1021]的随机字符示例之前插入ZWSP

除非

  • 字符后跟[\u103A]

  • 前一个字符是相同范围的unicode字符[\u1000-\u1021]或[\u1039],(可能还有一个或两个我以后可能需要添加的其他字符)

有人能帮忙吗?我将在UltraEdit中查找/替换大量文本。

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
引用了第二个标记组在搜索字符串中找到的字符。

这听起来很简单,所以请显示您尝试过的内容。否则我们可能会重复你已经尝试过的事情。