2016-08-09 78 views
1

Ich habe den Text unten in meiner DateiRegex ersetzen Problem mit Fragezeichen

<td class="toc-subitem-num"></td> 
    <td class="toc-title">Section 170 Text</td> 
    <td class="toc-subitem-num"></td> 
    <td class="toc-title"> 
     <span class="font-style-italic">Section 170A Text</span> 
    </td> 

Ich möchte den Section <number> Teil erfassen und ich bin mit dem unten regex, dies zu tun.

<td class="toc-subitem-num"></td>[\r\s\n]*<td class="toc-title">([\r\s\n]*<span class=\"font-style-italic\">)?Section ([0-9]+)([A-Z]+)? 

Die Suche funktioniert gut, aber in der ersetzen möchte ich diese Zahl in den ersten Tag kommen, das ersetzen, dass ich als unten.

<td class="toc-subitem-num">Section $1$2$3</td><td class="toc-title"> 

Mein aktueller o/p:

<td class="toc-subitem-num">Section 170</td><td class="toc-title"> Text</td> 
<td class="toc-subitem-num">Section 
    <span class="font-style-italic">170A</td><td class="toc-title"> Text</span> 

Erwartete O/p:

<td class="toc-subitem-num">Section 170</td><td class="toc-title"> Text</td> 
    <td class="toc-subitem-num">Section 170A</td> 
     <td class="toc-title"><span class="font-style-italic"> Text</span> 

Bitte lassen Sie mich wissen, wie kann ich dies tun.

Dank

+1

Ist diese Regex für die Verwendung in Javascript? – kcrk

+0

@kcrk ja, es ist für Js. – user3872094

+0

Ich sehe das Problem damit: https://regex101.com/r/fS9lC3/1 – kcrk

Antwort

1

Um bewegen, dies zu beheben Sie sicher, dass die Erfassung von Gruppen zu machen, um brauchen:

/<td class="toc-subitem-num"><\/td>[\s]*<td class="toc-title">[\s]*(<span class=\"font-style-italic\">)?(Section [\d]+[A-Z]*)? ([\w ]+)(<\/span>\s+)?(<\/td>)/gi 

Siehe Funktionsverison in Aktion hier: https://regex101.com/r/fS9lC3/3

Die Gruppen 2 und 3 werden jetzt immer zurückgegeben, was Sie wollen.

<td class="toc-subitem-num">$2</td><td class="toc-title">$1$3$4</td> 
0

Sie 3-Capture-Gruppen nutzen könnten und den 3.

str = str.replace(/(<td class="toc-subitem-num">)(<\/td>\s*<td class="toc-title">\s*(?:<span class="font-style-italic">)?)(Section\s*[0-9]+[A-Z]*)\s*/g, "$1$3$2");