Проблема в доступе к файлу с абсолютными путями

Отказ от ответственности: используйте парсер, если у вас есть опция. Тем не менее ...

Это регулярное выражение, которое я использую (!) Для соответствия тэгам HTML:

<(?:"[^"]*"['"]*|'[^']*'['"]*|[^'">])+>

Это может быть не идеально, но я запустил этот код через lot HTML. Обратите внимание, что он даже ловит странные вещи, такие как , которые появляются в Интернете.

Думаю, чтобы он не соответствовал самодостаточным тегам, вы либо захотите использовать Kobi :

<(?:"[^"]*"['"]*|'[^']*'['"]*|[^'">])+(?

или просто объединить, если и если нет.

To downvoters: Это рабочий код из реального продукта. Я сомневаюсь, что кто-либо читает эту страницу, создается впечатление, что социально приемлемо использовать регулярные выражения для HTML.

Предостережение. Я должен заметить, что это регулярное выражение все еще ломается при наличии блоков CD87, комментариев и элементов сценария и стиля. Хорошая новость заключается в том, что вы можете избавиться от тех, кто использует регулярное выражение ...

2
задан Ram Kumaran 18 January 2019 в 01:10
поделиться

2 ответа

Слава Богу, ты вырезал и вставил свой оригинальный код! Я знаю, что вы сделали, потому что когда я вырезал и вставил ваш код, я вижу, что у вас есть невидимые символы после открытой цитаты и до D:\.

Эти две строки выглядят одинаково, но это не так! Вырежьте и вставьте их, если вы мне не верите!

Ваш код:

        FileInfo fileInfo = new FileInfo(@"‪D:\ScriptData\test.zip");

Фиксированный код:

        FileInfo fileInfo = new FileInfo(@"D:\ScriptData\test.zip");

Вот что показывает бинарный редактор.

enter image description here

Вы тайно застряли E2 80 AA в файле исходного кода в начале вашего имени файла. Что является представлением UTF-8 символа ВЛЕВО ВПРАВО .

0
ответ дан Wyck 18 January 2019 в 01:10
поделиться

Судя по вашему скриншоту и выводу, в начале пути к файлу есть невидимый символ. Это приведет к тому, что .NET не сможет распознать, что это абсолютный путь, и автоматически это сделает его самим абсолютным путем.

Если вы используете этот код, вы заметите, что вставленный ? вызывает проблему здесь:

System.IO.FileInfo fi = new System.IO.FileInfo(@"?D:\some_file.ext");

, который выводит: C:\Users\...\ConsoleApp8\bin\Debug\netcoreapp2.2\?D:\some_file.ext.

Вместо:

System.IO.FileInfo fi = new System.IO.FileInfo(@"D:\some_file.ext");

Который выводит: D:\some_file.ext.

Если вы поместите свой код в HEX-редактор, вы увидите, что перед D: действительно есть символ.

0
ответ дан Patrick Hofman 18 January 2019 в 01:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: