使用正規表示式或任何東西,我需要匹配至少包含一個全大寫單字的任何段落。
然後將其轉換為標題,並將標題的內容全部大寫。在下面的例子中,這個詞這裡應該改為這裡。這包括重音字元。
我怎樣才能做到這一點?
<P STYLE="margin-bottom: 0cm"><BR>
</P>
</DIV>
<P CLASS="western" ALIGN=CENTER STYLE="margin-bottom: 0cm; line-height: 0.42cm">
<FONT SIZE=4><B>TITLE Here</B></FONT></P>
我正在使用Linux。
答案1
幾乎可以肯定,您可以使用控制台命令來完成此操作,但這聽起來像是一項一次性修復工作,而不是一項常規工作,因此我會使用我最喜歡的圖形正則表達式工具,即非常方便的開源程式設計師文字編輯器,稱為jEdit。 (看jedit.org了解詳情。
安裝 jEdit 後,您可以按 Ctrl+F 或前往「搜尋」選單並選擇「尋找」項目來開啟「搜尋和取代」對話方塊。
在「搜尋和取代」對話方塊中,您需要選擇要使用的「搜尋範圍」選項。 「目前緩衝區」將僅更改當前文件,「所有緩衝區」將更改當前在 jEdit 中打開的所有文件,「目錄」選項將允許您更改目錄中的所有文件(您在對話框底部指定) ) 與您指定的過濾器匹配(例如*.html
或*.php
)。 「目錄」選項非常強大,並且可能是您需要的選項,但要非常小心,並仔細檢查您的搜尋/替換不會透過以您沒有考慮的方式進行匹配而導致意外的更改。
接下來,您需要勾選對話方塊中間的「正規表示式」方塊。
現在,在「搜尋」文字方塊中輸入要用於定位需要變更的文字的正規表示式。如果我理解您的要求,這個正規表示式模式可能會完成這項工作:
(?<=>)([^<]*\p{Lu}{2,}[^<]*)(?=<)(?!</script)
此模式表示「選擇前面有 a>
且包含任意數量的不是<
至少兩個連續大寫字符的字符的文本,然後是任意數量不是 的字符<
,最後後面是 a<
但不是</script
」。
然後,您需要選擇“Return value of a BeanShell snippet”選項並在“Replace with”文字方塊中輸入:
_1.toUpperCase()
這個 BeanShell 片段只是說「在第一個捕獲組中捕獲的文字與正則表達式匹配,轉換為大寫」。
我已經對此進行了測試,它愉快地運行了一個 HTML 文件,尋找包含兩個或多個連續大寫字元的連續原始文字序列。請注意,任何包含 UK 或 USB 之類的無辜內容的段落也將通過此正則表達式進行匹配,因此您可能需要將量詞更改{2,}
為,{4,}
以便必須至少有四個連續的大寫字符才能匹配序列。
還要確保在將其釋放到有價值的文件或一組文件之前進行非常仔細的測試(並確保您首先備份了所有原始文件,以便在出現問題並且您沒有註意到之前可以恢復它們)您已保存更改)。