i ont cette chaîneRuby Split avec regex - regex ne fait pas ce que je veux
string = "<p>para1</p><p>para2</p><p>para3</p>"
Je veux diviser le texte para2, de sorte que je reçois ce
["<p>para1</p>", "<p>para3</p>"]
Les prises est que parfois para2 pourrait ne pas être enveloppé dans p tags (et il pourrait y avoir des espaces optionnels en dehors du p et à l'intérieur). Je pensais que cela ferait:
string.split(/\s*(<p>)?\s*para2\s*(<\/p>)?\s*/)
mais je reçois ceci:
["<p>para1</p>", "<p>", "</p>", "<p>para3</p>"]
ce n'est pas tirer les balises de début et de fin p dans le modèle correspondant - ils doivent être éliminés dans le cadre du Divisé. expressions régulières de Ruby sont avides par défaut, donc je pensais qu'ils ballotés dans tous et, cela semble confirmer si je fais un gsub au lieu d'une scission.
string.gsub(/\s*(<p>)?\s*para2\s*(<\/p>)?\s*/, "XXX")
=> "<p>para1</p>XXX<p>para3</p>"
Ils sont tiré et obtenu débarrasser d'ici, mais pas sur la scission. Des idées quelqu'un?
merci, max
Rappelez-vous, vous ne pouvez jamais vraiment analyser HTML avec regex. Si cette chaîne dépend de quelque manière que ce soit d'une entrée externe, utilisez un analyseur HTML comme hpricot ou nokogiri. – Matchu