Page 1 of 1

Ajuda com Verse.Rule

Posted: Sat Jun 17, 2017 2:56 am
by pcmac
Preciso de ajuda para desenvolver a verse.rule para um módulo de bíblia.

O módulo KJV não possui títulos e usa as seguintes verse.rule:

verse.rule="((?:^|.+?)(<W[GH]\d+>\ ?)+)" "<wt>$1"
verse.rule="<wt>(.*?)(<W([HG]\d+)>)(<W([HG]\d+)>)?(<W([HG]\d+)>)?" "<wt><a href=_STRONG_$3|_STRONG2_$5|_STRONG3_$7|_NOLINK_>$1</a>$2$4$6"

Dessa maneira os números de Strong podem ser ocultados, bastando configurar no theWord.

Mas se colocarmos títulos nesse módulo e mantivermos essas verse.rule o título fica, estranhamente, abaixo do número do versículo. Os números de Strong continuam podendo ser ocultados.

Se deletarmos a primeira verse.rule, o título fica correto (antes do número do versículo), mas o número de Strong passa a não ficar oculto, mostrando seu número.

A pergunta é: qual(ais) verse.rule que faz com que eu tenha o título antes do verso (que é o correto) e também possa ocultar os números de Strong em um módulo que tem a mesma estrutura do módulo KJV?

Re: Ajuda com Verse.Rule

Posted: Sat Jun 17, 2017 3:47 pm
by RubioTerra
Troque a verse.rule

Code: Select all

verse.rule="((?:^|.+?)(<W[GH]\d+>\ ?)+)" "<wt>$1"
por

Code: Select all

verse.rule="(<TS\d?>.+?<Ts>)?((?:^|.+?)(<W[GH]\d+>\ ?)+)" "$1<wt>$2"
Deve resolver.

Re: Ajuda com Verse.Rule

Posted: Mon Jun 19, 2017 4:30 am
by pcmac
Grato! Resolveu o problema.

Só por curiosidade: por que GH e não HG?

Pois na bíblia o hebraico vem antes do grego.

Re: Ajuda com Verse.Rule

Posted: Mon Jun 19, 2017 2:46 pm
by RubioTerra
Numa expressão regular "[GH]" representa um conjunto de caracteres válidos, não importa a ordem.

Re: Ajuda com Verse.Rule

Posted: Mon Jun 19, 2017 11:54 pm
by pcmac
No caso de um versículo no qual constam vários títulos como ficaria?

Eu coloquei assim a primeira verse.rule e funcionou, mas não sei se há um modo melhor (a segunda verse.rule mantive igual):

verse.rule="(<TS\d?>.+?<Ts>)?(<TS\d?>.+?<Ts>)?(<TS\d?>.+?<Ts>)?((?:^|.+?)(<W[GH]\d+>\ ?)+)" "$1$2$3<wt>$4"

Creio que assim funcione para até três títulos na mesma linha.

Re: Ajuda com Verse.Rule

Posted: Tue Jun 20, 2017 3:39 pm
by RubioTerra
Seria melhor usar o * em vez de repetir a expressão. Teste aí:

Code: Select all

verse.rule="(<TS\d?>.+?<Ts>)*((?:^|.+?)(<W[GH]\d+>\ ?)+)" "$1<wt>$2"

Re: Ajuda com Verse.Rule

Posted: Wed Jun 21, 2017 12:48 am
by JG
Rúbio
I think that there is a problem. Shouldn't it be without the ?

verse.rule="(<TS\d?>.+?<Ts>)*((?:^|.+?)(<W[GH]\d+>\ ?)+)" "$1<wt>$2"

Re: Ajuda com Verse.Rule

Posted: Wed Jun 21, 2017 1:46 am
by pcmac
RubioTerra wrote:Seria melhor usar o * em vez de repetir a expressão. Teste aí:

Code: Select all

verse.rule="(<TS\d?>.+?<Ts>)*((?:^|.+?)(<W[GH]\d+>\ ?)+)" "$1<wt>$2"
Desta maneira "perde" o primeiro título quando existem dois no mesmo versículo (não testei com 3 títulos)
JG wrote:Rúbio
I think that there is a problem. Shouldn't it be without the ?

verse.rule="(<TS\d?>.+?<Ts>)*((?:^|.+?)(<W[GH]\d+>\ ?)+)" "$1<wt>$2"
De fato, sem ? funciona melhor.


verse.rule="(<TS\d?>.+<Ts>)*((?:^|.+?)(<W[GH]\d+>\ ?)+)" "$1<wt>$2"