我正在开发一个基于用户输入使用正则表达式搜索文本的应用程序。用户的一种选择是使用星号包含“匹配 0 个或更多字符”通配符。我需要这个只在单词边界之间匹配。我的第一次尝试是将所有星号转换为(?:(?=\B).)*
,这在大多数情况下都可以正常工作。它失败的地方显然是.Net认为带有变音符号的unicode字符和另一个字符之间的位置是断词。我认为这是一个错误,并已将其提交给Microsoft 反馈站点。
然而,与此同时,我需要实现功能并交付产品。我正在考虑将[\p{L}\p{M}\p{N}\p{Pc}]*
其用作替换文本,但坦率地说,我处于“我不太明白这将要做什么”的地步。我的意思是,我可以阅读规范,但我不相信我可以充分测试它以确保它符合我的预期。我根本不知道要测试的所有边界条件。该应用程序由跨文化工作者使用,其中许多人在部落地区,因此需要支持任何和所有书写系统,包括一些使用零宽度分词的系统。
有没有人有更优雅的解决方案,或者可以确认/更正上面的代码,或者提供一些指针?
谢谢你的帮助。