A seguinte Regex permitirá comparar dois projetos com a marcação do nome divino \nd …\nd* no Paratext Find e usando Remove From List, para ver onde o número de instâncias em um versículo difere. As configurações precisam estar sem nenhuma restrição. Não funcionará se Match Only in Verse Text estiver marcado.
regex:(?<=\\v\s\S+\s)((?!\\(v|m?s|nd)).)*(\\nd [^\\]*?\\nd\*)){1,1}((?!\\(v|m?s|nd|c)).)*(?=\\(v|s|c)|\Z)
Esta regex permite encontrar versículos com um número especificado de spans \nd no texto:
- {1,1} um e apenas um
- {1} exatamente um (igual ao acima)
- {2,} dois ou mais
- {0,0} Nenhum
Ela não encontra a marcação \nd em títulos de seção, nem encontrará a marcação \+nd
Problemas
- Como não encontra a marcação \+nd, não encontrará \+nd em texto regular (raro).
- Não encontrará \nd em um versículo parcial que segue um título de seção (raro).
A seguinte Regex encontrará txt em spans \+nd …\+nd* em texto regular e notas de rodapé: .
regex:(?<=\\v\s\S+\s)(((?!\\(v|m?s|\+nd)).)*(\\\+?nd [^\\]*?\\\+?nd\*)){1,1}((?!\\(v|m?s|\+nd)).)*(?=\\(v|m?s)|\Z)
Problemas
- Como encontrará a marcação \+nd, encontrará \+nd em notas de rodapé (comum).
Se quisermos usar isso para comparar uma tradução em inglês que usa a marcação \nd com uma tradução que usa uma palavra única sem marcação para YHWH, podemos adicionar a palavra à busca. Para o francês, procuraremos por Eternel
regex:(?<=\\v\s\S+\s)(((?!\\(v|m?s|nd)|Eternel).)*(\\\+?nd [^\\]*?\\\+?nd\*|Eternel)){1,1}((?!\\(v|m?s|nd)|Eternel).)*(?=\\v|m?s)|\Z)
Como Eternel também ocorre em notas de rodapé, queremos pular a busca do texto em notas de rodapé. O seguinte Schema permitirá pular o texto (como um span de nota de rodapé) ao fazer a correspondência:
schema:(?<=<start>)(((?!<selector>).)*((<skipSpan>((?!<selector>).)*)*<requiredSpan>)){Min,Max}((?!<selector>).)*(<skipSpan>((?!<selector>).)*)*(?=<end>|\Z)
Para o <selector>, veja: Regex Examples: Matching Whole Lines of Text That Satisfy Certain Requirements
Se sua condição for que uma linha não deve conter algo, use negative lookahead. ^((?!regexp).)*$ corresponde a uma linha completa que não corresponde a regexp.
Vamos aplicar isso para pular o texto em notas de rodapé. Somos obrigados a corresponder a \nd e spans \+nd e Eternel:
<start> \\v\s\S+\s ; Start at verse
<end> \\(v|m?s) ; End at verse or section heading
<end>|\Z \\(v|m?s)|\Z ; For final context add \Z to select end of Chapter
<requiredStart> \\\+?nd|Eternel ; \nd markup optionally embedded and "Eternel"
<requiredSpan> (\\\+?nd [^\\]*?\\\+?nd\*|Eternel) ; The entire \nd phrase or "Eternel"
<skipStart> \\f\s ; Beginning of a footnote
<skipSpan> (\\f\s((?!\\f\*).)*\\f\*) ; The entire footnote
<selector> <end>|<skipStart>|<requiredStart> ; Combine all of the selection restrictions
=> \\(v|m?s)|\\f\s|\\\+?ndEternel ; which simplifies to
=> \\(v|m?s|f\s|\+?nd)|Eternel
Regex completa:
regex:(?<=\\v\s\S+\s)(((?!\\(v|m?s|f\s|\+?nd)|Eternel).)*(((\\f\s((?!\\f\*).)*\\f\*)((?!\\(v|m?s|f\s|\+?nd)|Eternel).)*)*(\\\+?nd[^\\]*?\\\+?nd\*|Eternel))){1,1}((?!\\(v|m?s|f\s|\+?nd)|Eternel).)*((\\f\s([^\\]|\\(?!f\*))*\\f\*)((?!\\(v|m?s|f\s|\+?nd)|Eternel).)*)*(?=(\\(v|m?s))|\Z)