Seasons.NET

ちょっとした技術ブログです

行頭に*が存在するか否か?

Subversionでコミットメールを通知するか否かをログのフォーマットにて判別している。
その際、行頭に*があるかによって振り分けるrubyスクリプトを書いたのだが、
改行挟むとマッチしてしまうので、ちょいと工夫。

マッチした最初のアイテムの出現位置が行頭かどうかの判別を入れた。

9/6
ささださんからアドバイスを頂いたので、修正版アップ!!
文字列先頭マッチってあるのを知らなかった・・・・

 1 #
 2 # 行頭に*が存在するかどうか?
 3 #
 4 
 5 $KCODE = "s"
 6 
 7 def isHasAstrisk( checkstr )
 8     #
 9     # 旧タイプ
10     # return ( /^\*{1}?[^*]+/ =~ checkstr ) && ( 0 == checkstr.index( Regexp.last_match[0].to_s ) )
11     #
12     # ささださん案
13     return ( /\A\*./ =~ checkstr )
14 end
15 
16 str = "*hoge\r\nhoge2"
17 p isHasAstrisk( str ) #=> true
18 
19 str = "hoge\r\n*hoge2"
20 p isHasAstrisk( str ) #=> false