我在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”,那么在这种情况下如何应用逐字字符串文字?
谢谢!
约翰
答案 0 :(得分:2)
我不认为调试输出意味着你的想法;使用逐字字符串(如"<" + tagName + @"(>|\s+[^>]*>)[^<]"
)将给出完全相同的结果,因为\s
不是有效的转义序列,因此F#将反斜杠解释为文字反斜杠而不是转义符。