Я нахожусь в процессе преобразования библиотеки регулярных выражений (тысячи регулярных выражений perl) и столкнулся с серьезной проблемой.
Это выражение, которое мне нужно перевести в static xpressive :
(?<![A-ZÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝ]\. )[mM]\.(?! [A-ZÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝ]\. )
Это выражение имеет before
и after
, отменяющие условия проверки.
Это означает, что обычно я должен использовать ~after
и ~before
.
Однако, поскольку есть многобайтовые символы, я должен поместить их как строковые литералы.
Поэтому моя первоначальная попытка была такой:
~after(range('A', 'Z')| as_xpr("À")| as_xpr("Á")| as_xpr("Â")| as_xpr("Ã")| as_xpr("Ä")|
as_xpr("Å")| as_xpr("Ç")| as_xpr("È")| as_xpr("É")| as_xpr("Ê")| as_xpr("Ë")|
as_xpr("Ì")| as_xpr("Í")| as_xpr("Î")| as_xpr("Ï")| as_xpr("Ñ")| as_xpr("Ò")|
as_xpr("Ó")| as_xpr("Ô")| as_xpr("Õ")| as_xpr("Ö")| as_xpr("Ø")| as_xpr("Ù")|
as_xpr("Ú")| as_xpr("Û")| as_xpr("Ü")| as_xpr("Ý") | as_xpr(". ") ) >>
(set= 'm', 'M') >> '.' >>
~before(range('A', 'Z')| as_xpr("À")| as_xpr("Á")| as_xpr("Â")| as_xpr("Ã")| as_xpr("Ä")|
as_xpr("Å")| as_xpr("Ç")| as_xpr("È")| as_xpr("É")| as_xpr("Ê")| as_xpr("Ë")|
as_xpr("Ì")| as_xpr("Í")| as_xpr("Î")| as_xpr("Ï")| as_xpr("Ñ")| as_xpr("Ò")|
as_xpr("Ó")| as_xpr("Ô")| as_xpr("Õ")| as_xpr("Ö")| as_xpr("Ø")| as_xpr("Ù")|
as_xpr("Ú")| as_xpr("Û")| as_xpr("Ü")| as_xpr("Ý") | as_xpr(". ") )
Однако, поскольку это дает переменнуюколичество символов, оно не скомпилируется.
В любом случае я могу правильно реализовать это регулярное выражение в static xpressive ?