功能请求:支持在Unicode Technical Report 35中定义的UnicodeSet语法。这将需要实现CLDR transliteration rules,该实现使用UnicodeSet进行过滤和匹配;支持CLDR示例字符,这些字符也是基于UTR35 UnicodeSets定义的;以及其他使用UnicodeSet的功能,如UTR39 Unicode Security Mechanisms。
请参阅Unicode的list-unicodeset tool(在线演示)及其documentation;以及ICU API中的ICU documentation。作为参考,您可能需要查看ICU源代码中的C++ implementation和Java implementation。
不确定是否可以通过将字符串语法重写为Go正则表达式来实现此功能,或者是否需要更多的工作。
2条答案
按热度按时间x3naxklr1#
CC @mpvl
z4iuyo4d2#
我非常确定Go的RE2正则表达式包与TR35中UnicodeSets的精确定义不兼容。尽管如此,它们还是相当接近的。
输入包regexp/syntax。它暴露了解析和编译此包的内部细节。编写一个替代的正则表达式解析器并将其附加到现有引擎上可能不会花费太多精力。