2016-08-09 36 views
1

替換問題我有下面的文字在我的文件正則表達式用問號

<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> 

我想捕捉的Section <number>一部分,我使用正則表達式如下這樣做。

<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]+)? 

搜索工作正常,但在替換我想要這個號碼來在第一個標記,我使用的替換如​​下。

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

我現在的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> 

預期的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> 

請讓我知道我如何能做到這一點。

感謝

+1

這是正則表達式使用JavaScript? – kcrk

+0

@kcrk是的,這是爲Js。 – user3872094

+0

我看到這個問題:https://regex101.com/r/fS9lC3/1 – kcrk

回答

1

爲了解決這個問題,你需要確保捕獲組是爲了:

/<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 

請參閱此處的功能版本verison:https://regex101.com/r/fS9lC3/3

捕獲組2和3現在總是返回你想要的。

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

你可以使用3個捕獲組和移動這是第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");