Я работаю над приложением, которое ищет текст с использованием регулярных выражений на основе ввода от пользователя. Пользователь может включить подстановочный знак «Совпадение 0 или более символов», используя звездочку. Мне нужно, чтобы это соответствовало только границам слов. Первой моей попыткой было преобразовать все звездочки в (?:(?=\B).)*
, что в большинстве случаев работает нормально. Там, где он терпит неудачу, очевидно, что .Net рассматривает положение между символом юникода с диакритическим знаком и другим символом как разрыв слова. Я считаю это ошибкой и отправил ее на сайт обратной связи Microsoft .
Тем временем, однако, мне нужно реализовать функциональность и отгрузить продукт. Я рассматриваю возможность использования [\p{L}\p{M}\p{N}\p{Pc}]*
в качестве замещающего текста, но, честно говоря, я нахожусь в земле "Я действительно не понимаю, что это будет делать". Я имею в виду, что могу прочитать спецификации, но не уверен, что смог бы достаточно проверить это, чтобы убедиться, что он выполняет то, что я ожидаю. Я просто не знаю всех граничных условий для тестирования. Приложение используется межкультурными работниками, многие из которых находятся в племенных местах, поэтому необходимо поддерживать любые системы письма, в том числе те, которые используют разрывы слов нулевой ширины.
Есть ли у кого-нибудь более изящное решение, или он может подтвердить / исправить приведенный выше код или предложить несколько указателей?
Спасибо за вашу помощь.