Kann mir jemand sagen, was es genau zu tun versucht?Was bedeutet dieser Regex?
$exp = '/[\s]+col[\s]*=[\s]*"([^"]*)"/si';
Kann mir jemand sagen, was es genau zu tun versucht?Was bedeutet dieser Regex?
$exp = '/[\s]+col[\s]*=[\s]*"([^"]*)"/si';
Sie können reguläre Ausdrücke mit Kommentaren schreiben, wenn Sie den Modifikator /x
hinzufügen. so hier ist eine langwierige und dokumentierte Version (immer ratsam, für komplexe):
$exp = '/
[\s]+ # one or more spaces
col # col
[\s]* # zero or more spaces
= # =
[\s]* # spaces
" # "
([^"]*) # anything but " and zero or more of it
" # "
/six';
auch manchmal Sie [^<">]
anstelle von [^"]
sehen solche regexps belastbarer gegen malformed html zu machen.
Niedlich, die Regex-Modifikatoren buchstabieren 'sechs'. – BoltClock
Schöne mehrzeilige Syntax ... obwohl manchmal <> in einem Attribut zu finden ist und die meisten Browser es aufnehmen. –
Es scheint col="some value"
passend zu werden, während der Leer sehr nachsichtig zu sein um das Gleichheitszeichen, Groß- und Kleinschreibung zu sein, und zwar unabhängig davon, ob der Wert leer ist oder nicht.
Auf einer Randnotiz ist es neugierig, was der s
Modifier dort tut, da es keine .
Metazeichen gibt.
Ich denke, andere haben bereits eine gute Antwort gegeben. Als beiseite, wenn dies für Parsen Markup nicht etwas ist, dann könnte man Funktionalität auf der Saite Seite mit etwas steigern wie dieses:
\s+ col \s* = \s* "((?: \\. | [^\\"]+)*)"
Perl'ish wäre:
use strict;
use warnings;
my $regex = qr/
\s+ col \s* = \s* "((?: \\. | [^\\"]+)*)"
/sx;
my $string = q(
col = " this'' is \" a test\s,
of the emergency broadcast system,
alright .\". cool."
);
if ($string =~ /$regex/)
{
print "Passed val =\n $1\n";
}
__END__
Passed val =
this'' is \" a test\s,
of the emergency broadcast system,
alright .\". cool.
Lassen Sie mich wissen, ob dies für Sie funktioniert – sln
Es kann komprimiert werden auf '/ \ scol \ s * = \ s *" ([^ "] *)"/i' – marcog
Es bedeutet, dass jemand reguläre Ausdrücke nicht gut versteht. – tchrist
Für diejenigen auf Windows-Plattformen, die Anwendung "RegexBuddy" ist sehr nützlich für das Verstehen und Konstruieren von Mustern. – Scuzzy