簡體   English   中英

C#正則表達式來操作文本

[英]C# Regular Expression to manipulate text

我有一個包含很多舊phpBB數據的數據庫,其中包含帶有類似文本的帖子:

[b:522f1e2c15]bold[/b:522f1e2c15]
[i:522f1e2c15]italic[/i:522f1e2c15]
[u:522f1e2c15]underline[/u:522f1e2c15]
[img:522f1e2c15]http://www.mysite.com/myimage.jpg[/img:522f1e2c15]
[quote:522f1e2c15="Mr Smith"]quoted text by Mr Smith[/quote:522f1e2c15]
[quote="Mr Smith"]quoted text by Mr Smith[/quote]

我正在將這些數據遷移到新系統,當我要渲染它們時,所有這些標記都需要進行操作,因此它們變為:

<b>bold</b>
<i>italic</i>
<u>underline</u>
<img src="http://www.mysite.com/myimage.jpg" />
<div><h4>Posted by Mr Smith</h4>quoted text by Mr Smith
<div><h4>Posted by Mr Smith</h4>quoted text by Mr Smith

在大多數情況下,原始phpBB標記中顯示的“ id”是相同的“每個帖子”,因此帖子可能看起來像以下內容(所有標記都包含id“ 522f1e2c15”):

This is [b:522f1e2c15]bold[/b:522f1e2c15] and this is [i:522f1e2c15]italic[/i:522f1e2c15].

但是,我還需要在同一帖子中滿足該ID在一個標簽和另一個標簽之間的差異,即

This is [b:123f1e2c15]bold[/b:123f1e2c15] and this is [i:522f1e2c15]italic[/i:522f1e2c15].

我還需要能夠處理這些標簽的嵌套實例,例如,加粗標簽的文本中帶有一些斜體標簽的文本,即

This is [b:522f1e2c15]bold and [i:522f1e2c15]this is bold italic[/i:522f1e2c15][/b:522f1e2c15].

我最初在此處發布了一個類似的問題 ,專門用於處理上述的“ quote”實例,使用似乎有效的解決方案回答了該問題 ,但經過進一步測試,我注意到,如果標記中包含的id是在同一個帖子中的另一個標簽中使用(例如,我在上面發布的示例),則它中斷了。

因此,基本上我需要一個能處理上述所有問題的正則表達式解決方案。

嵌套標簽位是Regex中難於完成的部分,但是.NET regex引擎提供了處理它們和ID匹配所需的所有工具。 您可以將正則表達式與平衡的組一起應用以解決任務。

也就是說,對於這種數據,我寧願實現真正的解析器,例如通過使用諸如GOLD Parser System或ANTLR之類的工具集。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM