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)