Mon but est d'obtenir un nettoyage de chaîne compatible avec unicode multiligne en utilisant regex.Expression rationnelle multiligne pour faire correspondre la chaîne après les données séparées par des espaces
J'ai commencé à partir de ce regex, qui n'a pas de limites de: arrières,
(?<=[[:blank:]]).*
Puis, je l'ai trouvé moyen de limiter lookbehind comme suit:
(?!.{20,})(?<=[[:blank:]]).*
Il fonctionne sur certains cas , mais pas vraiment stable (link) car la longueur de la chaîne n'est pas prévisible.
Aussi la virgule de queue n'est pas souhaitable, mais je n'ai pas compris comment elle pourrait être supprimée avec regex, parce qu'en raison de sa manière imprévisible (voir testcase).
Comment créer un lookbehind bien limité pour cette tâche? J'utilise boost (pcre) -style regex.
cas de test:
Dans
РПÑАВÂРßÛÑ ÛÑРВßР ÛÑÛÑАÑÛ, 11.22 Ø.Á.
ÛÑРВЛÛÑВ ÛÑßВßДÛÑВßЛ РИÐРÛПÑÑВÛ 11.22 Ã.Ö
ВßÑÛВÂЛÛÑВ ÛÑВÂÛÑВЛß ßРßÂРÑВЛРÛÐßРВ, 11.22 Â.Ö.
ÛÑВÛÑВ ÛßÛßРÑВßРÐ ßТАÛ, 11.22 Ã.Ö.
РÐÑАВПРßÛÑ ÛÑРВßР ÛÑÛÑАÑÛ, 11.22 Ø.р.
ÛÑРВÂÛÑВ ÛÑßВßДÛÑВß РÂПРÛПÑÑВÛ 11.22 Ø.Á.
ВßÑÛВДЛÛÑВ ÛÑВЛÛÑВЛß ßРßЛРÑВЛРÛЛßРВ 11.22 Ø.Ö.
ÛÑВÛÑВ ÛßÛßРÑВßРÐ ßТАÛ, 11.22 Ï.Á.
Out
РПÑАВÂРßÛÑ ÛÑРВßР ÛÑÛÑАÑÛ
ÛÑРВЛÛÑВ ÛÑßВßДÛÑВßЛ РИÐРÛПÑÑВÛ
ВßÑÛВÂЛÛÑВ ÛÑВÂÛÑВЛß ßРßÂРÑВЛРÛÐßРВ
ÛÑВÛÑВ ÛßÛßРÑВßРÐ ßТАÛ
РÐÑАВПРßÛÑ ÛÑРВßР ÛÑÛÑАÑÛ
ÛÑРВÂÛÑВ ÛÑßВßДÛÑВß РÂПРÛПÑÑВÛ
ВßÑÛВДЛÛÑВ ÛÑВЛÛÑВЛß ßРßЛРÑВЛРÛЛßРВ
ÛÑВÛÑВ ÛßÛßРÑВßРÐ ßТАÛ
Désolé, mais NPP ne pouvait rien correspondre à ce regex et test donné –
Oh, Notepadd ++ fait la différence. Il supporte PCRE mais de manière limitée. En particulier, il ne supporte pas les catégories Unicode, y compris 'L' - voir les commentaires sur' \ Nom de Pshort, \ P {name} '[ici] (http://docs.notepad-plus-plus.org/index.php/ Expressions régulières). Avec NPP, vous pouvez utiliser '\ w' pour faire correspondre les alphanumériques, y compris les caractères Unicode. Donc l'expression rationnelle peut être réécrite comme '^ (?: (?! \ D) [\ w \ s]) +'. –
désolé, mais cette regex ne fonctionne pas non plus. En raison de '^' il essaie de correspondre depuis le début. –