PHP regex разделитель, какой смысл?

Я знаю, что это старый поток, но я бы хотел указать на возможную версию DotNetCompilerPlatform.dll, f. ех. после обновления. Проверьте, если новый сгенерированный файл Web.config отличается как ваш выпущенный web.config, в частности часть system.codedom. В моем случае это было изменение версии от 1.0.7 до 1.0.8. Новая dll уже была скопирована на сервер, но я не изменил старый web.config (с некоторыми специальными настройками сервера):

<pre>
  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
    </compilers>
  </system.codedom>
</pre>

После обновления двух строк ошибка исчезла .

15
задан Evan Fosmark 27 January 2009 в 05:33
поделиться

3 ответа

Нет никакой технической причины, почему это должно быть похожим на это.

, Как отмечено в комментарии, базовая библиотека не требует, чтобы флаги были переданы как часть regexp - на самом деле, расширение должно снять изоляцию с них и передать их как отдельный аргумент.

появляется, как будто исходный реализатор пытался заставить его быть похожим на grep/sed/awk/perl/etc так, чтобы это было более знакомо программистам, происходящим из тех инструментов.

7
ответ дан 1 December 2019 в 02:10
поделиться

Я не знаю, каковы побуждения разработчиков функций preg были. Единственная причина, о которой я могу думать, состоит в том, что они попробовали немного слишком трудно, чтобы сделать вещи Perl путь.

, В то время как разделители позволяют флагам быть указанными наряду с regex как один параметр, указывая флаги, поскольку отдельный параметр является намного более чистым. Это - то, как любая библиотека регулярных выражений (для языков, которые не поддерживают литерал regexes как функция языка) я знаю, делает это, включая библиотеку PCRE, на основе которой функции preg PHP. Код preg действительно должен пойти канавка проблема удалить regex разделители из строки с Вашим regex, прежде чем это сможет быть передано PCRE.

6
ответ дан 1 December 2019 в 02:10
поделиться

Причина разделителя состоит в том, чтобы поместить флаги после шаблона. Возможно флаги могли быть переданы как отдельный параметр (Java может сделать это этот путь), но это - способ, которым Perl сделал это первоначально (и sed/awk/vi перед ним), таким образом, это - то, как он сделан теперь.

не используют наклонные черты вправо: они слишком распространены. Лично я почти всегда использую! символ. Я почти никогда не ищу это.

17
ответ дан 1 December 2019 в 02:10
поделиться
Другие вопросы по тегам:

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