我不明白。在.NET中我指定RegexOptions.Multiline,使用http://gskinner.com/RegExr/ i checkoff global和multiline
我期望^
和$
匹配行的开头和结尾,.
匹配除换行符之外的任何内容。发生了什么.*
似乎与换行符匹配似乎是错误的,因为msdn说Single
标志允许它匹配换行符(我没有使用)。我使用Linq将组1转换为键,将2转换为值,所有值除第一个外都有效。我想我可以用substring做一些事情,但为什么flash和.NET说这个模式匹配,我该如何修复(我想我可以使用子字符串,如果我需要)
模式:
^\s*([^\:]+)\s*\:\s*(.*)$
输入
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
答案 0 :(得分:1)
使用此模式:
^\s*([^:\n]+)\s*:\s*(.*)$
这是因为您的角色类[^:]
匹配除:
以外的所有字符,但包括换行符。
请注意,单线模式仅表示点可以匹配换行符。由于您使用的是字符类,因此无论是否使用模式
都具有相同的行为