我有在F#中的正則表達式的另一個問題:F#正則表達式字符串模式的變化意味着
let tagName = "div"
let ptnTagNotClose = "<" + tagName + "(>|\s+[^>]*>)[^<]"
我想找到匹配在HTML文件中未關閉標籤。模式字符串在VB.NET中起作用。 但對於F#,當我調試上面的代碼中,我可以看到ptnTagNotClose值:
ptnTagNotClose "<div(>|\\s+[^>]*>)[^<]"
F#自動變爲 「\ S +」 到 「\\ S +」,但對正則表達式, 「\ S +」和「\\ s +」是不同的,結果也不同。 請讓我知道如何避免F#自動更改字符串模式。
逐字字符串文字可能是一個解決方案,但由於tagName可以更改,即讓tagName =「br」,那麼在這種情況下如何應用逐字字符串文字呢?
謝謝!
約翰
此時我不得不指出它通常被認爲是一個非常糟糕的主意(http://stackoverflow.com/a/1732454/24380)用正則表達式解析HTML或XML。 – 2011-12-18 18:16:16
「tagName」可以改變的事實與逐字字符串文字有什麼關係?這些都是完全正交的問題... – ildjarn 2011-12-19 19:02:38
嗨,據我所知,使用正則表達式,人們可以從HTML中提取一些有用的信息。對於格式良好的XML,不需要使用正則表達式,因爲有足夠的工具可以獲取有用的信息。我知道通過正則表達式從HTML獲取所有信息並不容易。但只要我能夠獲得運行其他部分程序所需的信息,我認爲就足夠了! – 2011-12-19 21:17:04