Portál AbcLinuxu, 9. května 2025 21:52

Dotaz: Perl - proč nefunguje -g modifikátor v regexu?

22.2.2011 15:48 Pirkil
Perl - proč nefunguje -g modifikátor v regexu?
Přečteno: 171×
Odpovědět | Admin
Dobrý den, mám následující regex:

use strict;

use warnings;

use carp;



if ($line =~ m{\b(\w+)\b    

\s*

\b(\w+)\b #slovo v okolí hledaného slova

\s* #mezera

\b$slovo\b #hledané slovo

\s*

\b(\w+)\b

\s*

\b(\w+)\b} ixg)

I s modifikátorem 'g' mi při prohledávání textu najde pouze první výskyt tohoto vzoru na řádce. (Mám zjištěno, že vzoru odpovídají i jiné části řádky.) V kódování problém není, protože najde i výrazy s diakritikou. Díky za pomoc.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (Pirkil (tazatel))
22.2.2011 15:52 tyctor
Rozbalit Rozbalit vše Re: Perl - proč nefunguje -g modifikátor v regexu?
Odpovědět | | Sbalit | Link | Blokovat | Admin
mas to v podmienke, takze by malo byt jedno ci najde 1 alebo 1000, vrati proste true...

alebo je nieco inak?
22.2.2011 16:35 Pirkil
Rozbalit Rozbalit vše Re: Perl - proč nefunguje -g modifikátor v regexu?
máš samozřejmě pravdu - už mi to funguje, dík moc.
22.2.2011 17:18 NeoV | skóre: 23
Rozbalit Rozbalit vše Re: Perl - proč nefunguje -g modifikátor v regexu?
preco pouzivas kombinaciu \b\s*\b medzi slovami? Ved priamym ekvivalentom v tvojom regexe je \s+, teda:
$line =~ m{\b(\w+)
\s+
(\w+) #slovo v okolí hledaného slova
\s+ #mezera
$slovo #hledané slovo
\s+
(\w+)
\s+
(\w+)\b}ixg
22.2.2011 19:49 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Perl - proč nefunguje -g modifikátor v regexu?
Proměnné v regexu je dobré ohraničit citací, viz:
\Q$slovo\E
In Ada the typical infinite loop would normally be terminated by detonation.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.