2010-12-13 6 views
4

qui contient plusieurs \ r \ n et quand jeRemplacer plusieurs <br> en simple <br> utilisant C# ou Jquery

Regex.Replace(sampleText, @"[\r\n]{2,}", "<br />"); 

ce qu'il change d'avec plusieurs <br> pour plusieurs \ n. J'ai besoin de remplacer ces multiples <br> avec un seul <br />

le texte après REGX est:

Addendum 5 changes the following:<div><br></div>div<br>div&gt;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Addenda 5 - Landscape 
<br> 
<br> 
<br> 
<br> 
<br> 
<br> 
<br> 
<br> 
<br> 
<br> 
<br> 
<br> 
<br> 
<br> 
<br>&nbsp; 
<br>Item 
<br>Description 
<br>Qty 
<br>Unit 
<br> 
<br> 
<br> 
<br> 
<br> 
<br> 
<br> 
<br> 
<br> 
<br> 
<br> 
<br>Add 
<br>Pavestone Hollandstone Pavers<span style="">&nbsp;<br>span&gt; 
<br>Colo<br>to<br>e dark<br>own.<span style="">&nbsp;<br>span&gt;Base material not specified. Pavers to<br>e 
<br>ADA compliant. 
<br>478 
<br>SF 
<br> 
<br> 
<br> 
<br>Area w<br>Calgary 
<br>Carpet Junipe<br>is clouded on sheet L5.1. Unable to determine what changed in 
<br>that area. 
<br> 
<br> 
<br> 
<br>Deduct 
<br>Prunus laurocerasus 'Otto Luykens', 5 gal 
<br>Otto Luykens Laurel 
<br>-1 
<br>EA 
<br> 
<br> 
<br> 
<br>Deduct 
<br>Miscanthus sinensis<span style="">&nbsp; 
<br>span&gt;'Morning Light', 5 gal 
<br>Morning Light Miscanthus 
<br>-3 
<br>EA 
<br> 
<br> 
<br> 
<br>Add 
<br>Rose 'Knockout', 5 gal 
<br>Rose Knockout 
<br>11 
<br>EA 
<br> 
<br> 
<br> 
<br>Deduct 
<br>Turf-N Tee Mulch<span style="">&nbsp;<br>span&gt; 
<br>Install 1 1/2" depth mulch 
<br>@ 42 sf.<span style="">&nbsp;<br>span&gt;50% fo<br>each mulch type 
<br>-0.1 
<br>CY 
<br> 
<br> 
<br> 
<br>Deduct 
<br>Wood Shavings Mulch 
<br>Install 1 1/2" depth mulch 
<br>@ 42 sf.<span style="">&nbsp;<br>span&gt;50% fo<br>each mulch type 
<br>-0.1 
<br>CY 
<br> 
<br> 
<br> 
<br> 
<br> 
<br> 
<br> 
<br> 
<br> 
<br> 
<br> 
<br>Deduct 
<br>12-8-8 Gro-Power 
<br>Mix into planting areas at 75 
<br>lbs/1000 sf @ 42 sf pe<br>spec 329500-3.6. 
<br>-3 
<br>LBS 
<br> 
<br> 
<br> 
<br>Deduct 
<br>5-3-1 Gro-Powe<br>Plus 
<br>Mix into planting areas at 150 
<br>lbs/1000 sf @ 42 sf pe<br>spec 329500-3.6. 
<br>-6 
<br>LBS 
<br> 
<br> 
<br> 
<br>Deduct 
<br>Flou<br>of Sulfur 
<br>Mix into planting areas at 20 
<br>lbs/1000 sf @ 42 sf pe<br>spec 329500-3.6. 
<br>-1 
<br>LBS 
<br> 
<br> 
<br> 
<br>Deduct 
<br>Gro-Safe Activated Charcoal 
<br>Mix into planting areas at 200 
<br>lbs/1000 sf @ 42 sf pe<br>spec 329500-3.6. 
<br>-8 
<br>LBS 
<br> 
<br> 
<br> 
<br>Deduct 
<br>Plant Backfill: Compost 
<br>Apply 20% compost mix and 80% 
<br>native soil pe<br>detail B/L5.6. 
<br>-1 
<br>LS 
<br> 
<br> 
<br> 
<br>Deduct 
<br>Plant Backfill: Nitrogenized 
<br>Stabilized Organic Amendment 
<br>Fo<br>all container-sized plants, 
<br>ackfill shall<br>e a uniform mixture of the following ingredients<br>y volume): 
<br>6 parts<br>y volume on-site soil, 4 parts<br>y volume nitrogen stabilized organic 
<br>amendment, Grow powe<br>pe<br>manufacturers'<br>ecommendation, 2 lbs. iron sulfate 
<br>pe<br>cubic yard of mix pe<br>spec 329500-3.6. 
<br>-1 
<br>LS 
<br> 
<br> 
<br> 
<br>Deduct 
<br>Plant Backfill: 5-3-1 Gro-Power 
<br>Plant Backfill: 7-5 gal @ 1 cup 
<br>pe<br>specs 329500-3.6.<span style="">&nbsp;<br>span&gt; 
<br>-7 
<br>Cups 
<br> 
<br> 
<br> 
<br>Deduct 
<br>Plant Backfill: Flou<br>of Sulfate 
<br>Plant 7-5 gal @ 1/2 cup per 
<br>specs 329500-3.6.<span style="">&nbsp;<br>span&gt; 
<br>-3.5 
<br>Cups 
<br> 
<br> 
<br> 
<br>Deduct 
<br>Plant Backfill: Gro-Safe 
<br>Plant Backfill:7-5 gal @ 1 cup 
<br>pe<br>specs 329500-3.6.<span style="">&nbsp;<br>span&gt; 
<br>-7 
<br>Cups 
<br> 
<br> 
<br> 
<br>Deduct 
<br>20-10-5<span style="">&nbsp;<br>span&gt;Plante<br>Tablets 
<br>- 21 gram 
<br>Apply to planting pits at:7-5 
<br>gal @ 2 tablets pe<br>specs 329500-3.6. 
<br>-14.00 
<br>EA &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br>div<br>div<br>div&gt;</span></span></span></span></span></span></span></span></span></span> 

S'il vous plaît aider, Merci .

+0

Je ne vois aucune raison pour laquelle l'expression rationnelle que vous utilisez ne pas déjà en ce moment le faire, à moins d'espaces sur les lignes vides (mais il n'y a pas dans ce que vous avez collé). Ahh je vois que j'ai été trompé par une prime sur une question super vieille ..... – OGHaza

+1

Ce texte est sérieusement foiré. '
Fo
toutes les plantes de la taille d'un conteneur,' Je suppose devrait être '
Pour toutes les plantes de taille conteneur,' et il y a plus comme ça ... – Jerry

+0

Zalgo est le poney ... http://stackoverflow.com/a/1732454/945456 –

Répondre

7

Peut-être quelque chose comme ceci:

Regex.Replace(sampleText, @"[(<br(/|)>|<br(/|)>\n)]{2,}", "<br />"); 

doit vérifier <br> ou <br /> avec des sauts de ligne possibles \n.

Je ne l'ai pas testé et il pourrait y avoir des problèmes s'il y a un espace entre le <br> un des sauts de ligne

1

Essayez d'utiliser l'expression suivante pour ajouter vos <br /> tags:

Regex.Replace(sampleText, @"\r?\n\s*", "<br />"); 
4

Le suivant une expression régulière devrait fonctionner:

/(<br>\s*){2,}/ 

Il correspond essentiellement 2 ou plusieurs <br> consécutifs « s et caractères blancs facultatifs entre une paire de <br>. Ensuite, la méthode replace peut être utilisée pour remplacer l'élément correspondant par un seul <br>.

Une démo est disponible à l'adresse: http://jsfiddle.net/DA9h4/. Il utilise javascript, mais la même regex est également applicable dans d'autres langues.

var str = "Addendum 5 changes the following:<div><br></div>div<br>div&gt;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Addenda 5 - Landscape<br><br><br><br><br><br>&nbsp;<br>Item"; 

var r = new RegExp("(<br>\\s*){2,}"); 

console.log("old value: " + str); 
console.log("new value: " + str.replace(r, "<br>")); 

Quant à la question initiale qui utilise \r\n, l'expression rationnelle similaire suivante fonctionnerait:

/(\r\n\s*){2,}/ 
2

Vous pouvez utiliser ceci:

Regex.Replace(sampleText, @"[^\S\n]*\n\s*", "<br />"); 

Le modèle trouverez chaque groupe de blanc caractères qui contient un retour à la ligne et le remplacer par un <br /> unique.

[^\S\n]* # all white characters except \n, zero or more times 
\n   # a newline character 
\s*   # all white characters, zero or more times 

La première partie ne contient pas des sauts de ligne et est utilisé pour couper d'autres grands blancs-caractères (y compris le \r) jusqu'à ce que le premier caractère de nouvelle ligne.

La dernière partie correspond à tous les caractères blancs, y compris les éventuels nouveaux retours à la ligne ou retours chariot.

Notez que le type de saut de ligne (CRLF, LF) de votre chaîne n'a pas d'importance avec ce modèle, car il semble que pour \n

1

C#

Regex.Replace(sampleText, @"(<br ?/?>)+", "<br />"); 

jQuery/régulier ancien javascript

sampleText.replace(/(<br ?\/?>)+/, "<br />"); 

Hope this helps

1

Une chose importante à propos de th ese type d'expressions régulières utilisant des chaînes de correspondance séquentielles dans une ligne ou des lignes multiples avec des espaces entre, est de considérer tout caractère espace blanc [\r\n\t\f ] donc nous devrions aller écrire \s pour notre but car il comprend tous ces caractères ci-dessus.

((<br>\s*)\1?)+ 

L'étrange peut faire partie de cette regex est l'utilisation de refrence retour \1 il vérifiera pour chaque même groupe capturé ces derniers temps.

donc dans votre cas, vous allez utiliser:

Regex.Replace(sampleText, @"((<br>\s*)\1?)+", "<br />"); 

que vous pouvez voir son live demo here

1

Cela fonctionne correctement, essayez une fois.

Regex.Replace (sampleText, @ "(
\ s *) \ 1+", "
");

0

Vous souhaitez supprimer supplémentaire <br> jusqu'à ce qu'il ne reste donc:

do 
    { 
     yourText.Replace("<br><br>","<br>") 
    } while (yourText.Contains("<br><br>")) 
+0

Chose est très mauvaise. Considérez '(
) +' comme critère de recherche – Jan

Questions connexes