2010-02-26 11 views
1
some text I want to capture. <tag> junk I don't care about</tag> more stuff I want. 

Existe-t-il un moyen facile d'écrire une regex qui capture les première et troisième phrases dans une capture?combiner des captures dans regex

Répondre

0

Pas à ma connaissance. Habituellement, c'est pourquoi les fonctions de recherche et remplacement de regex vous permettent de vous référer à plusieurs groupes de capture en premier lieu.

1

Vous pouvez également envisager de décapage les données non désirées et la capture.

data = "some text to capture. <tag>junk</tag> other stuff to capture". 
data = re.replace('<tag>[^<]*</tag>', data, "") 
data_match = re.match('[\w\. ]+', data) 
0

Une capture de groupe est consécutive, donc vous ne pouvez pas. Vous pouvez le faire dans un parse avec regex comme ci-dessous et rejoindre la ligne dans le code

^(?<line1>.*?)(?:\<\w*\>.*?\</\w*\>)(?<line3>.*?)$ 
0

est ici une façon non regex, répartis sur </tag>, passer par les éléments du tableau, trouver <tag>, puis le partage sur <tag> et obtenir d'abord élément. par exemple

>>> s="some text I want to capture. <tag> junk I don't care about</tag> more stuff I want. <tag> don't care </tag> i care" 
>>> for item in s.split("</tag>"): 
...  if "<tag>" in item: 
...  print item.split("<tag>")[0] 
...  else: 
...  print item 
... 
some text I want to capture. 
more stuff I want. 
i care 

Utilisez la fonction split() de asp.net faire la même chose.

Questions connexes