1 votes

Regex pour lookahead Nom d'utilisateur : et correspondre au mot derrière jusqu'à la fin de la ligne

J'essaie d'écrire une Regex pour regarder en avant le nom de l'utilisateur : et faire correspondre le mot qui suit jusqu'à la fin de la ligne :

La regex est :

^(?=User name:)\s*\[A-Za-z]+

et le texte est :

Action:         NEW

User name:      Matthew Thomas
Job title:      Dealer Account Manager
Direct report:      Craig Carlson
Department:         Dealer Account Management
Location:       Milton, QLD
Employment type:    Permanent Full Time
Start date:         15/07/2013
Finish date:

__________________________________________
Decision Point 3
--------------
Read Only

0voto

Jaroslav Kucera Points 1472

Ce que vous voulez n'est pas très clair.

J'ai mis votre exemple de texte dans le fichier text.txt.

Si vous voulez simplement grep la ligne, il y a la solution :

grep -E "^User name:\s*[A-Za-z ]+$" text.txt
User name:      Matthew Thomas

Si vous voulez seulement le nom, nous pouvons améliorer la commande avec sed :

grep -E "^User name:\s*[A-Za-z ]+$" text.txt | sed -e '1,$s/^User name:\s*\([A-Za-z ]*\)$/\1/'

-1voto

Máté Juhász Points 20291

^(?=User name:)\s*\[A-Za-z]+

  • (?=User name:) Ce dont vous avez besoin, c'est de regarder derrière, pas devant :
    (?<=User name:)
  • ^(?=User name:) - lookbehind recherche au début, quel que soit l'endroit où vous le placez dans votre expression. Il recherche donc "Nom d'utilisateur :" suivi du début de la ligne et de quelques espaces. Incluez également le début de la ligne :
    (?<=^User name:)
  • mettez votre nom entre parenthèses, pour qu'il soit plus facile de le saisir :
    ([A-Za-z]+)
  • [A-Za-z] il peut y avoir aussi des espaces dans votre nom, ou même quelques lettres avec accent, je le modifierais comme ceci :
    (\S.+)
    (un caractère sans espace (suivant les espaces blancs) suivi de tout jusqu'à la fin de la ligne)

L'expression entière est : (?<=^User name:)\s*(\S.+)$

Vous pouvez tester est aquí .

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