Regex texte Correspondant APRÈS certains caractères
Je veux recueillir des données à partir du texte et de la déverser dans un tableau. Considérons le texte suivant comme exemple de données:
| Example Data
| Title: This is a sample title
| Content: This is sample content
| Date: 12/21/2012
Je suis actuellement en utilisant la suite de regex pour gratter les données spécifiées après le 'colon' caractère:
/((?=:).+)/
Malheureusement, cette regex attrape aussi le côlon et l'espace après les deux points. Comment collecter les données?
Aussi, je ne suis pas sûr si je suis en train de faire de ce droit.. mais il semble que l'extérieur des parenthèses sont les causes d'un match de retourner un tableau. Est-ce la fonction de parens?
EDIT: je suis en utilisant Rubular de tester mes expressions régulières
OriginalL'auteur Tushar Garg | 2012-12-17
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le changer à:
et de saisir le contenu de groupe 1. Un lookbehind travaille trop, cependant, et qui fait exactement ce que vous demandez:
OriginalL'auteur Ry-
En plus de @minitech réponse, vous pouvez également faire une 3ème variante:
La différence étant ici, vous créez/grab le groupe à l'aide d'un coup d'oeil derrière.
Si vous préférez le look-ahead plutôt que de regarder derrière le concept. . .
Cette place un regroupement autour de votre regex où il va l'attraper au sein d'un groupe.
Et oui, en dehors de la parenthèse dans votre code sera faire un match. Comparez-la à la dernier exemple que j'ai donné, où l'ensemble de look-ahead " est "groupés" plutôt que de inutilement à l'aide d'un
/( ... )/
sans/(?= ... )/
, depuis le premier résultat dans la plupart des moteurs d'expressions régulières retourner l'intégralité de la chaîne correspondante.De longueur Variable lookbehinds ne sont pas autorisés, donc
/(?<=: ?)(.+)/
ne fonctionne pas.OriginalL'auteur Jonathan
Je sais que vous vous demandez quels sont les regex, mais j'ai juste vu les regex solution et trouve que c'est plutôt difficile à lire pour ceux peu familiers avec la regex.
Je suis aussi à l'aide de Ruby et j'ai décidé de le faire avec:
Ce n'est ce que vous avez besoin et à mon avis c'est beaucoup plus lisible.
Pour une très longue chaîne, il pourrait être inefficace. Mais pas pour ce but.
OriginalL'auteur robSE13