REGEX - Allow HTML at the beginning of the string

0

This expression is cutting the HTML only when I put it at the beginning of the expression. How to fix this?

(?:[ \t]*[a-z][)]\s*)?([^\r\n<]+(?:(?:\r?\n(?!\s*[a-z][)])|<(?!br\s*\/?>(?:\s*<br\s*\/?>)*\s*(?:\s+[a-z][)]|\s*$)))[^\r\n<]*)*)(?:<br\s*\/?>\s*)*

link

questao=Request.Form("questao")

'RegEx
Set re = New RegExp
re.Global = true
re.IgnoreCase = true
re.Pattern = "(?:[ \t]*[a-z][)]\s*)?([^\r\n<]+(?:(?:\r?\n(?!\s*[a-z][)])|<(?!br\s*\/?>(?:\s*<br\s*\/?>)*\s*(?:\s+[a-z][)]|\s*$)))[^\r\n<]*)*)(?:<br\s*\/?>\s*)*"

Set matches = re.Execute(questao)
If (matches.Count) Then

    'PERGUNTA

    pergunta=(matches(0).SubMatches(0)) 
    Response.Write(pergunta)

    'RESPOSTAS
    For m = 1 To matches.Count - 1
        Response.Write(matches(m).SubMatches(0))
        resposta_a=matches(1).SubMatches(0)
        resposta_b=matches(2).SubMatches(0)
        resposta_c=matches(3).SubMatches(0)
        resposta_d=matches(4).SubMatches(0)
        resposta_e=matches(5).SubMatches(0)
    Next
End If

Set matches = Nothing
Set re = Nothing
%>
    
asked by anonymous 25.05.2018 / 15:39

1 answer

1

The problem is in this first negation set that excludes the symbol < (as well as the carriage return \r and the line feed \n ):

                             ↓
(?:[ \t]*[a-z][)]\s*)?([^\r\n<]+ ...

Just remove the < that will work, but I get the impression that this regex is polluted. With only ([^\r\n])+ already capturing everything in groups:

string = '<strong>Acerca</strong> dos atos notariais é correto afirmar:\n'
+'\r'
+'a) O testamento público não pode ser celebrado por relativamente incapaz maior de 16 e menor de 18 anos, sem a participação de assistente.\n'
+'b) Não é possível a lavratura de pacto antenupcial no regime da separação parcial de bens, mesmo quando os noivos pretendam alterar ou disciplinar algum aspecto específico do regime de bens, pois esta avença descaracterizaria preceito de ordem pública\n'
+'c) O aspecto temporal da emissão do documento é o critério essencial na diferenciação entre traslado e certidão\n'
+'d) Os requisitos formais a serem observados pelo Tabelião nas escrituras públicas e nas atas notariais são exatamente os mesmos, pois não há diferenças extrínsecas entre estes instrumentos públicos.\n'
+'e) Os requisitos formais a serem osasabservados pelo Tabelião nas escrituras públicas e nasasas atas notariais são exatamente os mesmos, pois não há diferenças extrínsecas entre estsases instrumentos <strong>públicos.</strong>'

matches = string.match(/([^\r\n])+/g)

for(var item of matches){
   console.log(item);
}
    
25.05.2018 / 16:40