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