2010-11-09 8 views
1

Je veux diviser une chaîne en parties basées sur une regex (\ $ \ d + \ $), mais je veux également savoir quelle est la valeur de ces points de partage. Ainsi, par exemple, si avoir la chaîne:Regex divisé avec la valeur divisée dans les résultats

<option value="beholder" selected="selected">$33685$</option> 
<option value="gnuchess_fancy">$33687$</option> 
<option value="gnuchess_simple">$33689$</option> 
| $29000$ 
<option value="beholder">$33671$</option> 
<option value="gnuchess_fancy">$33673$</option> 

Je veux diviser de sorte que les résultats des parties séparées deviennent:

o <option value="beholder" selected="selected"> 
o $33685$ 
o </option><option value="gnuchess_fancy"> 
o $33687$ 
o ...... 

Fractionnement avec le regex \ $ \ d + \ $ me donne seulement premier et troisième élément de la liste ci-dessus, alors que je veux tous les éléments.

Le langage de programmation n'a certes pas d'importance, il s'agit de l'expression rationnelle et de la division (ou de la correspondance).

J'ai aussi essayé de faire correspondre avec les regexs suivants, mais pas de chance

\$\d+\$|.*? 
.*?|\$\d+\$ 
.*?\$\d+\$.*? 
(.*?|\$\d+\$)* 

Toute aide est grandement appréciée.

+1

* Le langage de programmation n'a pas d'importance * - Cela compte. La syntaxe est différente dans chaque langue. Quelle langue utilisez-vous? Ou voulez-vous que les gens suggèrent une langue? –

+0

Avant que quelqu'un d'autre l'écrive, lisez cette réponse: http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 –

+0

@Mark, My bad dans ce cas, je l'utilise en combinaison avec .NET. – Henri

Répondre

1

Essayez de diviser avec des parenthèses:

(\$\d+\$) 

Dans certaines langues, le groupe capturé sont ajoutés au tableau de résultat.

+0

Super, exactement ce dont j'avais besoin :) Merci beaucoup! – Henri

+0

Merci! Déjà vérifié vos tags - .net il devrait fonctionner tel quel. Sur php, vous devez ajouter l'indicateur 'PREG_SPLIT_DELIM_CAPTURE'. – Kobi