Давайте взглянем на HTTP-спецификацию :
Поле заголовка ETag определяется как:
ETag = "ETag" ":" entity-tag
Правильный тег определяется как:
entity-tag = [ weak ] opaque-tag
weak = "W/"
opaque-tag = quoted-string
А в кавычках определяется как:
quoted-string = ( <"> *(qdtext | quoted-pair ) <"> )
Таким образом, значение поля заголовка ETag может содержать разрыв строки. И правильное регулярное выражение будет:
/ETag:\s+(?:W\/)?"(?:[ !#-\x7E\x80-\xFF]*|\r\n[\t ]|\\.)*"/