好的,所以我昨天打開了this question,很快得到了答案。它起作用了,或者我想,所以我將它標記爲正確的答案。正則表達式 - 檢查一個文本區域中是否不包含匹配
但是我不認爲我解釋得很好。基本上,我們在呈現HTML之前就已經獲取了HTML,解析它並搜索匹配模式[tag|text x]
的字符串,其中x是一個數字,這兩個字不區分大小寫。
但是,正如上一個問題所述,如果它們在textarea中,我不想替換這些標記。這意味着如果他們之間的</textarea>
和<textarea...>
然後我仍然想要替換他們,但如果他們之間<textarea...>
和</textarea>
然後我不想替換他們。
到目前爲止,我有
@"(?<!\<textarea class='tag'\>)\[(tag|text) ([0-9]+)\]"
我已經試過
@"(?<!\<textarea.[^>]*\>)\[(tag|text) ([0-9]+)\]"
但似乎並沒有擦出火花。
例如我想替換任何標籤的文字區域的外面在以下:
[tag 1]
<textarea>[tag 2]</textarea>[tag 3]
<textarea class="bob">Walter [tag 4]</textarea>[tag 5]
<textarea attr-1="fred">Jim [tag 6] Mary</textarea>[tag 7]
[tag 8]
在這個例子中僅標籤1,3,5,7和8應該更換; 2,4和6不應該。
有沒有人有任何想法如何改變它,以實現這一目標?我不是要求任何人爲我做所有的工作,並給我答案 - 我在這裏學習。我現在已經掙扎了幾個小時,所以對此的任何幫助都會很棒!
非常好!謝謝!正是我在找的東西。它也會拒絕textarea上的HTML標籤內的標籤,所以它比我所要求的要多(忘記提及它們可以採用這種形式)。我希望我能得到正則表達式,但我無法完全理解它們。 HTML目前格式良好,但這並不是說他們將在未來,當我工作的公司控制它們時。再次感謝。 – ClarkeyBoy
嗨,我一直在試圖修改正則表達式來排除類'noreplace'跨度內的文本。但是我一直不成功。到目前爲止,我有'\ [(tag | text)\ s +(\ d +)\](?!(([^ <] *(?:<(?!/?textarea \ b)[^ <] *)*)|([^ <] *(?:<(?!/?span \ b)(class ='noreplace')+ [^ <]*)*)))''。如果我刪除了'(class ='noreplace')+',那麼它適用於所有跨度和文本區域(因爲它不包括它們),我只是不能添加一個類並讓它包含所有其他跨度。如果你能幫我解決這個問題,我會很感激。謝謝。 – ClarkeyBoy
這是一個不同的問題,需要不同的方法。這些「」元素中是否還有其他標籤?特別是,能不能有其他''元素?如果其他''元素具有'class ='noreplace''屬性?但是這個答案無法擴展到即使是最簡單的情況。如果您將此作爲一個新問題發佈(包含詳盡的示例數據),我相信我們可以用解決方案來解決這兩個問題。 –