+1 vote

The following Regex will allow you to compare two projects with the divine name markup \nd …\nd* in Paratext Find and using Remove From List, to see where the number of instances in a verse differ. Settings need to be without any restrictions. It will not work if Match Only in Verse Text is checked.

regex:(?<=\\v\s\S+\s)((?!\\(v|m?s|nd)).)*(\\nd [^\\]*?\\nd\*)){1,1}((?!\\(v|m?s|nd|c)).)*(?=\\(v|s|c)|\Z)

This regex allows you to find verses with a specified number of \nd spans in the text:

  • {1,1} one and only one
  • {1} exactly one (same as above)
  • {2,} two or more
  • {0,0} None

It does not find \nd markup in section headings nor will it find \+nd markup

Issues

  • Since it will not find \+nd markup it will not find \+nd in regular text (rare).
  • It will not find \nd in a partial verse that follows a section heading (rare).

The following Regex will find txt in \+nd …\+nd* spans in regular text and footnotes: .

regex:(?<=\\v\s\S+\s)(((?!\\(v|m?s|\+nd)).)*(\\\+?nd [^\\]*?\\\+?nd\*)){1,1}((?!\\(v|m?s|\+nd)).)*(?=\\(v|m?s)|\Z)

Issues

  • Since it will find \+nd markup it will find \+nd in footnotes (common).

If we want to use this to compare an English translation that uses \nd markup with a translation that uses a unique unmarked word for YHWH, we can add the word to the find. For French we will look for 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)

Since Eternel also occurs in footnotes we want to skip finding the text in footnotes. The following Schema will allow you skip text (such as a footnote span) when matching:

schema:(?<=<start>)(((?!<selector>).)*((<skipSpan>((?!<selector>).)*)*<requiredSpan>)){Min,Max}((?!<selector>).)*(<skipSpan>((?!<selector>).)*)*(?=<end>|\Z)

For the <selector> see: Regex Examples: Matching Whole Lines of Text That Satisfy Certain Requirements

If your condition is that a line should not contain something, use negative lookahead. ^((?!regexp).)*$ matches a complete line that does not match regexp.

Let’s apply this to skipping text in footnotes. We are required to match \nd and \+nd spans and 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

Complete regex:
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)

Paratext by (1.8k points)
reshown

Please log in or register to answer this question.

Related questions

Welcome to Support Bible, where you can ask questions and receive answers from other members of the community.
Just as a body, though one, has many parts, but all its many parts form one body, so it is with Christ.
1 Corinthians 12:12
2,466 questions
5,158 answers
4,845 comments
1,265 users