Regex pour changer de casse de la phrase
J'utilise Notepad++ pour faire un peu de texte de remplacement dans un 5453-ligne de langue de fichier. Le format du fichier de lignes est:
variable.name = Variable Value Over Here, that''s for sure, Really
Double apostrophe est intentionnelle.
J'ai besoin de convertir la valeur à la casse de la phrase, à l'exception des mots "Ici" et "Vraiment" qui lui sont propres et doit rester une majuscule. Comme vous pouvez le voir, le cas au sein de la valeur est généralement mélangé à commencer avec.
J'ai travaillé sur ce pour un peu de temps. Tout ce que j'ai obtenu jusqu'à présent est:
(. )([A-Z])(.+)
qui semble au moins sélectionner les chaînes appropriés. La pièce de remplacement est là que j'ai du mal.
- Pourquoi sont "Ici" et "Vraiment" bon?
Vous devez vous connecter pour publier un commentaire.
Regex de remplacement ne peut pas exécuter la fonction (comme la capitalisation), sur les matchs. Vous avez le script que, par exemple, en PHP ou JavaScript.
Mise À Jour: Voir Jonas répondre.
Je me suis construit une page Web appelé Utilitaires De Texte pour faire ce genre de choses:
^(.*?\=\s*\w)(.*)$
)s, start, rest
return start + rest.toLowerCase();
La dernière fonction dans la zone de texte ressemble à ceci:
Peut-être ajouter un peu de code pour capitaliser certains mots comme "Vraiment" et "Ici".
Dans Notepad++ 6.0 ou plus (ce qui vient avec construit-dans PCRE de soutien).
\u
majuscules seulement le premier caractère du match. De même\l
sera minuscule juste le premier caractère.\U
,\L
aller de l'avant le match, le marqueur (par exemple\1
). Ainsi, le modificateur de préfixes le match.\L\u
à titre de cas d'un mot à l'aide d'un seul groupe de capture. Mais vous ne pouvez pas faire\e
à réprimer les cas de conversion d'un seul caractère - ce juste émet un caractère ESC.Dans Notepad++, vous pouvez utiliser un plugin appelé PythonScript pour faire le travail. Si vous installez le plugin, créez un nouveau script comme ceci:
Ensuite, vous pouvez utiliser le script suivant, en remplaçant l'expression régulière et la fonction de variables comme bon vous semble:
Cet exemple particulier des œuvres de trouver tous les matchs dans une ligne en particulier, puis en appliquant la fonction de chaque de chaque match. Si vous avez besoin de soutien multiligne, le Script Python "Conext-Aide", explique toutes les fonctions offertes, y compris pymlsearch/pymlreplace fonctions définies sous l'éditeur de l'objet.
Lorsque vous êtes prêt à exécuter votre script, accédez au fichier que vous souhaitez exécuter sur le premier, puis allez dans "Scripts >" dans le Script Python menu et exécuter les vôtres.
Remarque: alors que vous serez probablement en mesure d'utiliser notepad++de fonction annuler si vous vous trompez, il pourrait être une bonne idée de mettre le texte dans un autre fichier pour vérifier qu'elle fonctionne.
P. S. Vous pouvez "trouver" et "marque" chaque occurrence d'une expression régulière à l'aide de notepad++'s intégré dans la boîte de dialogue rechercher, et si vous pouviez sélectionner tous vous pouvez utiliser TextFX de "Personnages->majuscule" fonctionnalité pour ce problème particulier, mais je ne suis pas sûr de savoir comment aller de a marqué ou texte trouvé pour le texte sélectionné. Mais, je pensais que j'allais publier ce post au cas où quelqu'un ne...
Edit: Dans Notepad++ 6.0 ou supérieur, vous pouvez utiliser "PCRE (Perl Compatible Regular Expression) Rechercher/Remplacer" (source: http://sourceforge.net/apps/mediawiki/notepad-plus/?title=Regular_Expressions) Donc cela aurait pu être résolu à l'aide d'une regex comme
(. )([A-z])(.+)
avec un remplacement de l'argument comme\1\U\2\3
.\U
ont été documentés!L'interlocuteur avait un cas très spécifique à l'esprit.
Comme un "changement de phrase" dans notepad++
la première regexp suggestion ne fonctionne pas correctement pour moi.
tout n'est pas parfait, ici est une version remaniée qui
a été une grande amélioration sur l'original pour mes fins :
Vous avez toujours un problème avec les minuscules des noms, des noms, des dates, pays, etc. mais un bon correcteur d'orthographe peut vous aider.