L'expression régulière suivante vous permettra de comparer deux projets avec le balisage du nom divin \nd …\nd* dans la fonction Rechercher de Paratext et en utilisant Remove From List, pour voir où le nombre d'occurrences dans un verset diffère. Les paramètres doivent être sans aucune restriction. Cela ne fonctionnera pas si Match Only in Verse Text est coché.
regex:(?<=\\v\s\S+\s)((?!\\(v|m?s|nd)).)*(\\nd [^\\]*?\\nd\*)){1,1}((?!\\(v|m?s|nd|c)).)*(?=\\(v|s|c)|\Z)
Cette expression régulière vous permet de trouver des versets avec un nombre spécifié de segments \nd dans le texte :
- {1,1} un et seulement un
- {1} exactement un (comme ci-dessus)
- {2,} deux ou plus
- {0,0} Aucun
Elle ne trouve pas le balisage \nd dans les titres de section ni le balisage \+nd
Problèmes
- Comme elle ne trouve pas le balisage \+nd, elle ne trouvera pas \+nd dans le texte courant (rare).
- Elle ne trouvera pas \nd dans un verset partiel qui suit un titre de section (rare).
L'expression régulière suivante trouvera txt dans les segments \+nd …\+nd* dans le texte courant et les notes de bas de page : .
regex:(?<=\\v\s\S+\s)(((?!\\(v|m?s|\+nd)).)*(\\\+?nd [^\\]*?\\\+?nd\*)){1,1}((?!\\(v|m?s|\+nd)).)*(?=\\(v|m?s)|\Z)
Problèmes
- Comme elle trouvera le balisage \+nd, elle trouvera \+nd dans les notes de bas de page (courant).
Si nous voulons utiliser cela pour comparer une traduction anglaise qui utilise le balisage \nd avec une traduction qui utilise un mot unique non balisé pour YHWH, nous pouvons ajouter le mot à la recherche. Pour le français, nous chercherons 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)
Comme Eternel apparaît également dans les notes de bas de page, nous voulons éviter de trouver le texte dans les notes de bas de page. Le schéma suivant vous permettra d'ignorer le texte (tel qu'un segment de note de bas de page) lors de la correspondance :
schema:(?<=<start>)(((?!<selector>).)*((<skipSpan>((?!<selector>).)*)*<requiredSpan>)){Min,Max}((?!<selector>).)*(<skipSpan>((?!<selector>).)*)*(?=<end>|\Z)
Pour <selector>, voir : Exemples d'expressions régulières : Correspondance de lignes de texte complètes qui satisfont certaines exigences
Si votre condition est qu'une ligne ne doit pas contenir quelque chose, utilisez la recherche négative anticipée (negative lookahead). ^((?!regexp).)*$ correspond à une ligne complète qui ne correspond pas à regexp.
Appliquons cela à l'ignorance du texte dans les notes de bas de page. Nous sommes tenus de faire correspondre les segments \nd et \+nd et 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
Expression régulière complète :
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)