SRT 자막 파일을 조작하려고합니다. 파일의 시작의 예 문자열 @data
:루비 정규식은 처음 유효한 (?) 일치를 무시합니다
1
00:01:09,611 --> 00:01:12,404
In co-production with
2
00:01:14,783 --> 00:01:17,034
presents
내가 정규식으로 모든 id
's의 일치되었다 :
@data.scan(/^\d+\w*$/)
그러나이 첫 번째 1
를 무시 만 출력 2..900
. 내가 정규식에서 일부 문자를 놓쳤다 생각하고 @data
분석 :이 첫 번째 1
가 일치하지 않은 이유
puts @data[0,10].inspect => "1\n00:01:09,611 --> "
내가 이해가 안 돼요. @data.match()
으로 실행해도 1
이 아니라 2
이 산출됩니다.
그런 다음 1
앞에 \n
을 추가하면 효과가있었습니다. 그러나 나는 왜 ^
이 문자열의 실제 시작 대신 \n
을 필요로하는지 이해하지 못합니다.
문자열에'1'보다 이상한 문자가있는 것 같습니다. 'p @data [0, 10] .bytes'를 시도하십시오. 첫 번째 문자는 49가 아닙니다. – Dogbert
문자열의 첫 번째 문자가 UTF-8의 바이트 순서 표시 인 것 같습니다 - http://en.wikipedia.org/wiki/Byte_order_mark – Dogbert
'@data.scan (/^\ d + \ w * $ /)'는 내 환경에서'[ "1,"2 "]'를 제공합니다. – sawa