This will match all lines that have:
<span class="test_formal2">
followed or not by <p class="test_formal">
But not <p class="test_formal">
followed by <span class="test_formal2">
- Ctrl+F
- Find what:
^(?:(?!<p class="test_formal">).)*<span class="test_formal2">.*$
- check Wrap around
- check Regular expression
- UNCHECK
. matches newline
- Search in document
Explanation:
^ # beginning of line
(?: # start non capture group
(?! # negative lookahead, make sure we haven't
<p class="test_formal"> # literally
) # end lookahead
. # 1 any character
)* # end group, may appear 0 or more times
<span class="test_formal2"> # literally
.* # 0 or more any character
$ # end of line
Given:
<p class="test_formal">
<span class="test_formal2">
<p class="test_formal"><span class="test_formal2">
blah blah <p class="test_formal"><span class="test_formal2"> blah blah
<span class="test_formal2"><p class="test_formal">
blah blah <span class="test_formal2"><p class="test_formal"> blah blah
It matches:
Search "^(?:(?!<p class="test_formal">).)*<span class="test_formal2">.*$" (3 hits in 1 file)
new 2 (3 hits)
Line 2: <span class="test_formal2">
Line 5: <span class="test_formal2"><p class="test_formal">
Line 6: blah blah <span class="test_formal2"><p class="test_formal"> blah blah
Regex101 Demo