2013-07-13 2 views
0

Не понимаю. В .NET я указать RegexOptions.Multiline, используя http://gskinner.com/RegExr/ я Отметка глобальный и многострочныйRegex соответствует новым строкам, если это не так?

Что я ожидаю ^ и $, чтобы соответствовать начало и конец строки и ., чтобы соответствовать ничего, кроме символа новой строки. Что происходит .*, похоже, соответствует новой строке, которая кажется неправильной, поскольку msdn говорит, что флаг Single позволяет ему соответствовать новой строке (которую я не использую). Я использую Linq для преобразования группы 1 в качестве ключа и 2 в качестве значения, а все значения работают, кроме первого. Я предполагаю, что я могу сделать что-то с подстрокой, но почему вспышка и .NET говорит, эта модель соответствует и как я исправление (я предполагаю, что я могу использовать подстроку, если мне нужно)

Выкройка:

^\s*([^\:]+)\s*\:\s*(.*)$ 

Input

ffmp 


eg version N-54691-g7f4a1fd Copyright (c) 2000-2013 the FFmpeg developers 
    built on Jul 12 2013 16:26:02 with gcc 4.7.3 (GCC) 

    configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib 
    libavutil  52. 39.100/52. 39.100 
    libavcodec  55. 18.102/55. 18.102 
    libavformat 55. 12.102/55. 12.102 
    libavdevice 55. 3.100/55. 3.100 
    libavfilter  3. 80.101/3. 80.101 
    libswscale  2. 3.100/2. 3.100 
    libswresample 0. 17.102/0. 17.102 
    libpostproc 52. 3.100/52. 3.100 
Input #0, ogg, from 'd:\music\a.ogg': 
    Duration: 00:03:24.49, start: 0.000000, bitrate: 195 kb/s 
    Stream #0:0: Audio: vorbis, 44100 Hz, stereo, fltp, 192 kb/s 
    Metadata: 
---- 
--- 
     ARTIST   : Anamanaguchi 
     TITLE   : Blackout City 
     ALBUM ARTIST : Anamanaguchi 
     ALBUM   : Dawn Metropolis 
     track   : 1 
     YEAR   : 2009 
     GENRE   : rock 
     DATE   : 2009 
     ENCODER   : MediaMonkey 4.0.3 
     ENSEMBLE  : Anamanaguchi 
     RATING   : -1 
At least one output file must be specified 

ответ

1

использовать этот шаблон вместо:

^\s*([^:\n]+)\s*:\s*(.*)$ 

это из-за вашего персонажа класса [^:], который соответствует всем символам, кроме :, но включает в себя символы новой строки.

Имейте в виду, что однолинейный режим означает только то, что точка может соответствовать символам новой строки. Поскольку вы используете класс символов, у вас одинаковое поведение с режимом или без него

+0

Правильно, но не на 100% правильно. Похоже, что '\ s *' соответствует новым строкам, поэтому я заменил '\ s *' '' 'и проблема решена –

Смежные вопросы