O caractere de ponto do .NET Regex corresponde ao retorno de carro?

Cada sabor único de regex que eu já usei sempre teve o "." o caractere corresponde a tudo, exceto uma nova linha (\ r ou \ n) ... a menos que você ative o sinalizador de linha única.

Então, quando tentei o seguinte código C #, fiquei chocado:

Regex rgx = new Regex(".");
if (rgx.Match("\r\n").Success)
  MessageBox.Show("There is something rotten in the state of Redmond!");

Mostrou a mensagem. Apenas para ter certeza de que não estava ficando louco, tentei o seguinte código JavaScript:

if (/./.test("\r\n"))
  alert("Something's wrong with JavaScript too.");

O JavaScript não mostrou a mensagem, o que significa que está funcionando exatamente como deveria.

Aparentemente, o "." O caractere no .NET está correspondendo ao caractere "\ r". Eu verifiquei odocumentação para ver se a menção menciona algo sobre isso:

Caractere curinga: corresponde a qualquer caractere, exceto \ n.

Uau ... desde quando é que um sabor Regexsempre o ponto corresponde a um retorno de carro? Você pensaria que o .NET se comportaria como todos os demais tipos de Regex ... especialmente porque está em um ambiente Windows que usa "\ r \ n" como delimitadores de linha.

Existe algum sinalizador / configuração que eu possa ativar para fazê-lo funcionar como em outros tipos de Regex? Existem soluções alternativas que não envolvam a substituição de todas. caracteres com[^\r\n]?

questionAnswers(5)

yourAnswerToTheQuestion