F # регулярное выражение строковый шаблон изменить смысл - PullRequest
0 голосов
/ 18 декабря 2011

У меня есть другой вопрос для регулярного выражения в F #:

let tagName = "div"
let ptnTagNotClose = "<" + tagName + "(>|\s+[^>]*>)[^<]"

Я хочу найти совпадения, чтобы не закрывать тег в файле HTML. Строка шаблона работает в VB.NET. Но для F #, когда я отлаживаю приведенный выше код, я вижу значение для ptnTagNotClose:

ptnTagNotClose "<div(>|\\s+[^>]*>)[^<]"

F # автоматически меняет "\ s +" на "\\ s +", но для регулярного выражения "\ s +" и "\\ s +" различны, результаты также различны. Пожалуйста, дайте мне знать, что нужно делать, чтобы F # автоматически не менял строковый шаблон.

Строковый литерал строки может быть одним из решений, но, поскольку tagName может измениться, т. Е. Let tagName = "br", то как я могу применить дословный строковый литерал в этом случае?

Спасибо!

John

1 Ответ

2 голосов
/ 18 декабря 2011

Я не думаю, что вывод отладки означает, что вы думаете, что он делает;использование дословной строки (например, "<" + tagName + @"(>|\s+[^>]*>)[^<]") даст вам точно такой же результат, поскольку \s не является допустимой escape-последовательностью, поэтому F # интерпретирует обратную косую черту как буквенную обратную косую черту, а не как escape-символ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...