3 votes

Notepad++ regex pour remplacer une lettre majuscule au milieu d'un mot par une lettre minuscule

Je travaille constamment avec la reconnaissance de texte et je finis par avoir des lettres en majuscules au milieu ou à la fin des mots (par exemple, wOrd au lieu de word; leSS au lieu de less).

  1. Y a-t-il un moyen de faire une recherche et remplacement, en utilisant Notepad++, pour que les caractères en majuscules/minuscules soient transformés en minuscules/minuscules ? (Je peux sélectionner tout le texte et modifier tous les caractères en minuscules/minuscules, mais cela changera les noms, le début des phrases avec des caractères incorrects)
  2. Est-il possible d'éviter de transformer des mots qui sont des abréviations (par exemple, USA devrait rester inchangé) ?
  3. (quelque chose de plus difficile) est-il possible d'exclure certains mots de cette transformation ? Par exemple, il y a certaines unités physiques (par exemple, eV, mW, kJ) qui devraient rester les mêmes, c'est-à-dire qu'elles ne doivent pas être modifiées. ... Je pense qu'en général, les unités physiques sont des mots de 2 caractères (il y a aussi quelques exceptions ici, mais je pense pouvoir les gérer manuellement)

Merci ! R

0 votes

Pouvez-vous donner plus de cas de test, quel est le résultat attendu pour : WORD, WoRd, Word, IS, tHE, iT ...

0 votes

Les résultats attendus (dans le même ordre) : MOT (ma deuxième demande/question), Mot, Mot, EST, le, il (Je sais que cela casse d'une certaine manière ma troisième demande/question, mais... ces (unités physiques) ne sont pas très fréquentes). Merci!

12voto

Máté Juhász Points 20291

Oui, vous pouvez le faire dans Notepad++:

  • Rechercher : ([a-z]+[A-Z]+\w*)
  • Remplacer par : \L\1
  • Assurez-vous que "Respecter la casse" et "Expression régulière" sont cochés

Cela recherchera les séquences de caractères commençant par des lettres minuscules et contenant des lettres majuscules et les convertira en minuscules

  • ne convertira pas les abréviations (USA) car elles ne contiennent pas de lettres minuscules
  • ne convertira pas les lettres majuscules au début d'un mot
    (p.ex. "UPpERCase" => "UPpercase" car l'expression régulière correspondra et convertira "pERCase")
  • vous pouvez vérifier comment cela fonctionne ici

Étant donné que la mise en place d'exceptions est plus difficile, je n'ai pas de suggestion à vous faire à ce sujet.

2voto

Toto Points 14447
  • Ctrl+H
  • Trouver quoi: \b(?!(?:[A-Z]+|eV|mW|kJ)\b)([A-Z]?)(\w+)
  • Remplacer par: $1\L$2
  • cocher Respecter la casse
  • cocher Rechercher à partir du début
  • cocher Expression régulière
  • Tout remplacer

Explication :

\b              # limite de mot
(?!             # regard en arrière négatif, assurez-vous que nous n'avons pas un mot
  (?:           # groupe de non-capture
    [A-Z]+      # tout le mot est en majuscules
  |             # OU
    eV          # littéralement (électronVolt)
  |             # OU
    mW          # littéralement (milliWatt)
  |             # OU
    kJ          # littéralement (kiloJoule)  (Vous pouvez ajouter toutes les exceptions que vous voulez ici)
  )\b
)
([A-Z]?)        # groupe 1, une majuscule facultative au début d'un mot
(\w+)           # groupe 2, 1 ou plusieurs caractères de mot

Remplacement :

$1          # contenu du groupe 1, majuscule facultative
\L$2        # groupe 2 en minuscules

Données fournies :

WORD, WoRd, Word, IS, tHE, iT, eV, mW, kJ

Résultat pour l'exemple donné :

WORD, Word, Word, IS, the, it, eV, mW, kJ

Capture d'écran :

entrez la description de l'image ici

Si vous souhaitez traiter toutes les unités et les (sous-)multiples, changez Trouver quoi en :

\b(?!(?:[A-Z]+|(?:[yzafpnµmcdhk]|da)(?:[ACFJKLNSTVW]|Bq|Gy|Hz|Pa|Sv|Wb|eV))\b)([A-Z]?)(\w+)

Où :

[yzafpnµmcdhk]      # y(octo), z(epto), a(tto), f(emto), p(ico), n(ano), µ(micro), m(illi), c(enti), d(eci), h(ecto), k(ilo)
da                  # deca

[ACFJKLNSTVW]       # A(mpère), C(oulomb), F(arad), J(oule), K(elvin), L(iter), N(ewton), S(iemens), T(esla), V(olt), W(att)
Bq                  # Becquerel
Gy                  # Gray
Hz                  # Hertz
Pa                  # Pascal
Sv                  # Sievert
Wb                  # Weber
eV                  # Electronvolt

1voto

Si vous utilisez \L vous mettrez en minuscule TOUT ce qui se trouve à sa droite ; si vous avez juste besoin de mettre en minuscule la correspondance (par exemple : $1) alors utilisez \l (L minuscule).

EG: Première lettre en majuscule
rexp (\w+) (\w+) (\w+) (\w+)

repl-> \L$1 $2 $3 $4
résultat-> première lettre en majuscule

repl-> \l$1 $2 $3 $4
résultat-> première lettre en majuscule

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X