Code: Select all
/\/]*)(=\s*("[^"]*"|\047[^\047]*\047|[^[:space:]>]+)|[^>])*(>|$)/
< /code>
, aber es löst das Problem nicht, wenn Tags beliebige Fehler enthalten können. Zum Beispiel < /p>
echo '135' | LC_ALL=en_US.utf8 gawk 'BEGIN {IGNORECASE = 1}
{
s = gensub(/\/]*)(=\s*("[^"]*"|\047[^\047]*\047|[^[:space:]>]+)|[^>])*(>|$)/, "(tag)", "g", $0);
print(s)
}'
Code: Select all
/]*(>|$)|]*)(\s+[^[:space:]\/>]+\s*=\s*("[^"]*"|\047[^\047]*\047|[^[:space:]>]+)|[^>])*(>|$)/
< /code>
Es gibt die richtigen Ergebnisse für fast alle Eingänge aus, die in der Praxis auftreten können, einschließlich Eingaben mit Fehlern. Zum Beispiel die Eingabe aus dieser Antwort: < /p>
echo '0&e link 3' | LC_ALL=en_US.utf8 gawk 'BEGIN {IGNORECASE = 1}
{
s = gensub(/]*(>|$)|]*)(\s+[^[:space:]\/>]+\s*=\s*("[^"]*"|\047[^\047]*\047|[^[:space:]>]+)|[^>])*(>|$)/, "(tag)", "g", $0);
print(s)
}'
Code: Select all
echo '23' | LC_ALL=en_US.utf8 gawk 'BEGIN {IGNORECASE = 1}
{
s = gensub(/]*(>|$)|]*)(\s+[^[:space:]\/>]+\s*=\s*("[^"]*"|\047[^\047]*\047|[^[:space:]>]+)|[^>])*(>|$)/, "(tag)", "g", $0);
print(s)
}'
Code: Select all
echo '135' | LC_ALL=en_US.utf8 gawk 'BEGIN {IGNORECASE = 1}
{
s = gensub(/]*(>|$)|]*)(\s+[^[:space:]\/>]+\s*=\s*("[^"]*"|\047[^\047]*\047|[^[:space:]>]+)|[^>])*(>|$)/, "(tag)", "g", $0);
print(s)
}'