2009-09-24 5 views
1

ok J'ai un fichier qui peut être modifié ou non. franchement je dois ignorer ça. J'ai besoin de rechercher le document trouver tous les < et correspondant> balises et supprimer tout en leur sein. J'ai essayé d'obtenir que cela fonctionne un peu mon regex actuelle est:Regex avec < and >

private Regex BracketBlockRegex = new Regex("<.*>", RegexOptions.Singleline); 
.... 
resultstring = BracketBlockRegex.Replace(filecontents, ""); 

mais cela ne semble pas fonctionner, car il attire la manière à beaucoup. des indices? Y a-t-il quelque chose de bizarre avec les symboles < et> dans C#?

Répondre

4

Essayez une variante non gourmande de votre regex:

<[^>]*> 

Qu'est-ce que vous avez, <.*>, correspondra à la première < suivi de tout jusqu'à la dernière >, alors ce que vous voulez est de faire correspondre au premier un.

+0

bingo! ceci a eu pour fonctionner –

7

Remplacer

<.*> 

avec

<.*?> 
1

Essayez:

private Regex BracketBlockRegex = new Regex("<.*?>", RegexOptions.Singleline); 
2

Les expressions régulières sont gourmandes et vous avez une période qui équivaut à TOUT ce qui vient d'arriver à inclure le plus grand que le moins de caractères.

Try this ...

<[^<>]*> 

Arguably the best Regular Expression resource on the Internet.

+0

non. cela ne fonctionne pas. Je dois me rappeler que je dois considérer les caractères de nouvelle ligne et les sauts de ligne comme étant inclusifs pour le match. –

+0

@Arthur: Elle comprend les retours chariot et les sauts de ligne. Vouliez-vous dire exclusif? Si c'est le cas, vous voudrez <[^<> \ r \ n] *> – MyItchyChin

0

Notez que vous devrez peut-être ajouter quelques qualificatifs d'analyse syntaxique sur la façon d'interrompre les données source.

Une étiquette HTML peut être divisée en espaces blancs sur différentes lignes.

< IMG SRC =
"blah.jpg"
ALT = "bla"
>

Certains parseurs d'expression régulière peut, ou ne peut pas, match de . à \ r ou \ n en fonction des paramètres.

Questions connexes