Não tenho a mínima ideia do que está acontecendo aqui, então estou deixando a mente da nuvem descobrir, desculpe.
Tenho um string
(confirmado com .gettype()
), um trecho do qual está abaixo (\r\n no final de cada linha):
Request Inputs
Inputs With Value
Displaying 17 out of 19 inputs
Company Division
<my company name>
No entanto, quando executado contra o padrão abaixo, não consigo descobrir por que ele produz System.Collections.Hastable[1]
em $Matches[1]
. E o mais importante, ele está vazio. Por quê?
$TextBoxText -match '(?s).*(?:Company Division[\r\n])([^\r\n]*)'
Supondo que você esteja se perguntando por que seu padrão atual não foi capturado
<my company name>
no capture group1
, o motivo é porque no Windows, as strings new lines geralmente serão CRLF e com sua classe de caractere atual[\r\n]
você está permitindo ambos, CR e LF , mas apenas uma única correspondência de qualquer um deles. Então você poderia fazer:Então o padrão funciona bem, mas ainda melhor seria usar
\r?\n
o que também funcionaria bem em qualquer sistema operacional:Em ambos os casos, o grupo não-capturador pode ser removido, não há razão para tê-lo ali. Você também pode remover
(?s).*
do padrão, deixando-o por enquanto, pois não está claro qual era a intenção. Se você estiver interessado apenas em capturar o que vem depois deCompany Division
, então o padrão pode ser apenas: