2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

« ひとつのショートカットで複数のアプリを起動するには? | トップページ | バッチファイルで、文字化けファイル名を補正する。 »

2008年12月 3日 (水)

正規表現での改行文字の罠

Windows OSでのテキストファイルの改行文字は\r\nです。
一方、正規表現の改行文字は\nです。
なので、正規表現でテキストファイルを見ると、行末に\rがあります。
つまり、.*には、末尾に\rが付きます。
このようなトラブルを回避するには、先に\rを除去しておくとよいでしょう。
あるいは、.の代わりに[^\r\n]を使うとよいでしょう。

set re=new regexp
re.multiline=true

re.pattern=".+$"
set matches=re.execute("a" & vbcrlf & "b")
msgbox escape(matches(0).value),,"NG"

re.pattern="[^\r\n]+$"
set matches=re.execute("a" & vbcrlf & "b")
msgbox escape(matches(0).value),,"OK"


以前は、$は\nの直前にしかマッチせず、
| 行末hogeはhoge$に掛かりません。
| $の代わりに\r?$を使うとよいでしょう。
でしたが、\rの直前にもマッチするよう修正されたようです。

« ひとつのショートカットで複数のアプリを起動するには? | トップページ | バッチファイルで、文字化けファイル名を補正する。 »