Question REGEX: Saisir tout jusqu'à un mot spécifique


ex: <a><strike>example data in here</strike></a> 

Je veux tout à l'intérieur du tag, jusqu'à la fin

/<a>([^<]*)<\/a>/

Cela fonctionne quand il n'y a pas de tags supplémentaires dans le <a> tag, mais si il y en a?

Je veux savoir si vous pouvez lui dire de tout prendre jusqu'à [^</a>] au lieu de [^<] seulement.

Le faire avec /<a>(.*)<\/a>/ ne fonctionne pas bien. Parfois, je reçois tout dans le <a> tag et d'autres fois, je reçois des tonnes de lignes incluses dans cet appel.


31
2017-09-29 00:14


origine


Réponses:


/<a>(.*?)<\/a>/

devrait marcher. Le ? le rend paresseux, donc il saisit le moins possible avant de faire correspondre le </a> partie. mais en utilisant. signifiera qu'il correspond à tout jusqu'à ce qu'il trouve </a>. Si vous souhaitez pouvoir faire correspondre les lignes, vous pouvez utiliser les options suivantes avec preg_match

/<a>(.*?)<\/a>/s

Le "s" à la fin met l'expression régulière en mode "simple ligne", ce qui signifie que. caractère correspond à tous les caractères, y compris les nouvelles lignes. Voir autres modificateurs utiles


78
2017-09-29 00:17