Dobrý den,
v anglické části fóra uživatel timmy2 přichází s nápadem umožnit hledat složky neobsahující určité soubory. Toto mne insirovalo k tomuto příspěvku, když jsem nedávno řešil několik úloh:
1) Najít všechny soubory, které neobsahují daný text
2) Najít všechny soubory, které obsahují text "A" a text "B"
3) Najít všechny soubory, které obsahují "A" nebo "B"
4) Najít všechny soubory, které obsahují "A" ale ne "B"
(body 1 a 4 se týkaly vyhledání souborů, které je potřeba aktualizovat a tudíž neobsahují nejnovější řetězce)
Body 2 a 3 lze obejít použitím regulárních výrazů (u 2 třeba myslet na obě možná pořadí slov v souboru) a pravděpodobne by šel pomocí regulárních výrazů vyřešit i bod 4. Na bod 1 si pomocí regulárních výrazů již netroufnu a tak si troufám navrhnout do Hledání implementovat základní výrazovou logiku: AND, OR a NOT (případně ještě se závorkami).
BTW: hledání lze opakovat a skládat (AND/OR/AND NOT) dohromady, čímž pravděpodobně ve dvojnásobném čase a s několikanásobným usílím dosáhneme stejného výsledku. Pokud ve výrazové logice povolíme závorky, opakovaným hledáním již nebude možné úlohu řešit.
Zadáním: kočka OR pes AND NOT morče by byly nalezeny všechny soubory, které obsahují zmínku o kočce nebo psu, ale bez zmínky o morčeti.
Pro vyhledání souborů bez určitého textu by se zadalo: NOT text
Pokud je třeba zadat text s mezerou, je možné použít uvozovky: kočka AND NOT "siamská kočka" - všechny soubory o kočkách, ale ne siamských kočkách
Možné rozšíření:
- kombinace regulárních výrazů a logických operátorů ("(19|20)[0-9]{2}" AND NOT 2008 - hledá roky od 1900 do 2099 bez 2008)
- operátor NEAR, který by hledal text "A" blízko slova "B". Blízko = jen několik slov okolo slova B (případně žádné slovo, ale jen bílé znaky a interpunkční znaménka). Výrazu siamská NEAR kočka by tedy odpovídalo spojení siamská modrá kočka ale ne spojení: Siamská vláda odsouhlasila důležitý zákon. Kočka se tak stala národním zvířetem.
Možné problémy:
- "siamská kočka" AND NOT kočka by nevyhledalo žádné soubory
Hledání - logické operátory pro vyhledávaná slova
-
- Posts: 593
- Joined: 09 Dec 2005, 17:30
- Location: a step further
- Contact:
Re: Hledání - logické operátory pro vyhledávaná slova
Toto je velmi dobry napad. +1 za me.
Operator NEAR je pekny, ale vetsinou jej kazdy chce jinak (pripadne nikdo nevi jak funguje). Takze ten bych klidne vypustil. Jeho simulace pomoci RE neni tezka.zarevak wrote: - operátor NEAR, který by hledal text "A" blízko slova "B". Blízko = jen několik slov okolo slova B (případně žádné slovo, ale jen bílé znaky a interpunkční znaménka). Výrazu siamská NEAR kočka by tedy odpovídalo spojení siamská modrá kočka ale ne spojení: Siamská vláda odsouhlasila důležitý zákon. Kočka se tak stala národním zvířetem.
Jiri {x2} Cincura
-
- Posts: 593
- Joined: 09 Dec 2005, 17:30
- Location: a step further
- Contact:
OT: Je zajimave, ze se tomu porad rika RE, i kdyz uz pak regularni vlastne nejsou.ether wrote:Regular expression obsahují takzvané look-aheads, kterými se dají zařídit i ostatní zmiňované body. Problém je v tom, že implementace, která je v AS, toto pravděpodobně nepodporuje (hází chybu o neplatné syntax).
Jiri {x2} Cincura
podpora prohledavani
Okno find pouzivam velice casto (mam odpor vuci google desktop, Nero scout i tem vista hledacum) - a ocenil bych krom vyse uvedeneho i nejakou rychlou napovedu (neco jako je v "Regular Expressions Syntax" v helpu - jen strucnejsi a vice poruce - napriklad jen nekolik zakladnich ukazek + odkaz do help okna)...
Re: Hledání - logické operátory pro vyhledávaná slova
XYplorer je v tomto celkom ďaleko.
Re: Hledání - logické operátory pro vyhledávaná slova
You're looking for file names (rather then contents within the files) that meet your criteria?
(Everything [1.5] can also search contents.)
There is nothing better then, Everything for finding files.
(Even better is, Everything 1.5 Alpha.)
& it does regex & everything else under the sun.
---
Hledáte názvy souborů (spíše než obsah souborů), které splňují vaše kritéria?
(Vše [1.5] může také prohledávat obsah.)
Není pak nic lepšího, Vše pro hledání souborů.
(Ještě lepší je, Everything 1.5 Alpha.)
& dělá regulární výraz a všechno ostatní pod sluncem.
(Everything [1.5] can also search contents.)
There is nothing better then, Everything for finding files.
(Even better is, Everything 1.5 Alpha.)
Code: Select all
foo bar -> find foo AND bar
foo bar -> find foo AND bar
foo | bar -> find foo OR bar
foo !bar -> find foo, but NOT bar
cat dog !"guinea pig", find cat AND dog, but NOT "guinea pig"
---
Hledáte názvy souborů (spíše než obsah souborů), které splňují vaše kritéria?
(Vše [1.5] může také prohledávat obsah.)
Není pak nic lepšího, Vše pro hledání souborů.
(Ještě lepší je, Everything 1.5 Alpha.)
& dělá regulární výraz a všechno ostatní pod sluncem.
WinXP Pro SP3 or Win7 x86 | SS 2.54