Pierwsze rozwizanie: Dopasowywanie wszystkich znacznikw poza <em> i <strong>
</?(?!(?:em|strong)\b)[a-z](?:[^>"']|"[^"]*"|'[^']*')*>
Opcje wyrae regularnych: Ignorowanie wielkoci liter
Odmiany wyrae regularnych: .NET, Java, JavaScript, PCRE, Perl, Python, Ruby


< /?                   # Akceptuje znaczniki zamykajce.
(?!                    # Negatywne wyszukiwanie w przd.
    (?: em | strong )  #     Lista znacznikw, ktre nie maj by dopasowywane.
    \b                 #     Granica wyrazu eliminujca ryzyko akceptacji czciowych dopasowa.
)                      #
[a-z]                  # Pierwszym znakiem nazwy znacznika musi by litera a  z.
(?: [^>"']             #    Dowolny znak poza >, " i '.
  | "[^"]*"            #    Warto atrybutu otoczona cudzysowami.
  | '[^']*'            #    Warto atrybutu otoczona apostrofami.
)*                     #
>                      #
Opcje wyrae regularnych: Ignorowanie wielkoci liter, swobodne stosowanie znakw biaych
Odmiany wyrae regularnych: .NET, Java, PCRE, Perl, Python, Ruby


Drugie rozwizanie: Dopasowywanie wszystkich znacznikw poza <em> i <strong> oraz wszystkich znacznikw obejmujcych atrybuty
</?(?!(?:em|strong)\s*>)[a-z](?:[^>"']|"[^"]*"|'[^']*')*>
Opcje wyrae regularnych: Ignorowanie wielkoci liter
Odmiany wyrae regularnych: .NET, Java, JavaScript, PCRE, Perl, Python, Ruby


< /?                   # Akceptuje znaczniki zamykajce.
(?!                    # Negatywne wyszukiwanie w przd.
    (?: em | strong )  #     Lista znacznikw, ktre nie maj by dopasowywane.
    \s* >              #     Unika tylko tych znacznikw, ktre nie zawieraj adnych atrybutw.
)                      #
[a-z]                  # Pierwszym znakiem nazwy znacznika musi by litera a  z.
(?: [^>"']             #    Dowolny znak poza >, " i '.
  | "[^"]*"            #    Warto atrybutu otoczona cudzysowami.
  | '[^']*'            #    Warto atrybutu otoczona apostrofami.
)*                     #
>                      #
Opcje wyrae regularnych: Ignorowanie wielkoci liter, swobodne stosowanie znakw biaych
Odmiany wyrae regularnych: .NET, Java, PCRE, Perl, Python, Ruby


Biaa lista atrybutw
<(?!(?:em|strong|a(?:\s+(?:href|title)\s*=\s*(?:"[^"]*"|'[^']*'))*)\s*>)[a-z](?:[^>"']|"[^"]*"|'[^']*')*>
Opcje wyrae regularnych: Ignorowanie wielkoci liter
Odmiany wyrae regularnych: .NET, Java, JavaScript, PCRE, Perl, Python, Ruby


< /?             # Akceptuje znaczniki zamykajce.
(?!              # Negatywne wyszukiwanie w przd.
    (?: em       #     Nie pasuje do <em>...
      | strong   #     ani do <strong>...
      | a        #     ani do <a>...
        (?:      #         Unika tylko tych znacznikw <a>, ktre...
            \s+  #             zawieraj atrybuty href i (lub) title.
            (?:href|title)
            \s*=\s*
            (?:"[^"]*"|'[^']*')  # Warto atrybutu otoczona cudzysowami lub apostrofami.
        )*
    )
    \s* >        # Unika dopasowywania tylko tych znacznikw, ktre...
)                #     zawieraj wymienione powyej atrybuty.
[a-z]            # Pierwszym znakiem nazwy znacznika musi by litera a  z.
(?: [^>"']       #     Dowolny znak oprcz >, " i '.
  | "[^"]*"      #     Warto atrybutu otoczona cudzysowami.
  | '[^']*'      #     Warto atrybutu otoczona apostrofami.
)*
>
Opcje wyrae regularnych: Ignorowanie wielkoci liter, swobodne stosowanie znakw biaych
Odmiany wyrae regularnych: .NET, Java, PCRE, Perl, Python, Ruby
