» Poradna » Web a internet

Jak sestavit regulární výraz pro vyhledání slova v určitém textu?

Odpovědět  |  Zobrazit bez stromu  |  Upozornit redakci  |  nových odpovědí: 7/7
 |   |  Microsoft Windows XP Opera 9.80  |  [217.212.230.---]

Když potřebuju vyhledat na disku txt soubory, ve kterých se nachází někde mezi slovy "odstavec 1" a "odstavec 2" slovo "jablko", jak bude vypadat regulární výraz?Díky.

Odpovědi na otázku

 |   |  Microsoft Windows 7 Opera 9.80

odstavec 1.*jablko.*odstavec2Ale záleží kde a jak ten regulérní výraz budeš spouštět. Je nutné mu nastavit parametr, který ho přepne do "singleline" režimu, kdy celý soubor bude brát jako celek. Běžně totiž ta tečka "." nebere konce řádku \n a vyhledává to po jednotlivých řádcích. Ale ty musíš nastavit aby i ta tečka brala znak \n (tj konec řádku) jako normální znak a vyhledávalo se to v celém souboru.Bohužel to jak tam ten parametr nastavit nelze říci, záleží v čem a jak ten regulární výraz používáš.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows XP Firefox 20.0  |  [89.103.213.---]

Nargon: Dotaz nedává smysl, protože je to jen volné pokračování tohotohttp://www.zive.cz/poradna/podrobne-vyhledav...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows XP Firefox 20.0  |  [89.103.213.---]

TC není špatná volba, ale "regulární výrazy" zde mají trochu jiný význam, viz Nápověda.Vyzkoušej Agent Ransack, v řádku Containing text mělo by stačit zadat"odstavec 1" AND slovo AND "odstavec 2"Rozlišování velikosti písmen zapneš/vypneš ikonou Aa, v Look in zvolíš adresář, popř. včetně podadresářů.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows XP Opera 9.80  |  [89.103.83.---]

To funguje tak na půl, problém je v tom že mi vyjede i ty soubory, u kterejch se to "jablko" nachází mimo danej text. Tedy všechny ty tři slova tam jsou, ale já potřebuju, aby to slovo "jablko" bylo přesně mezi, a to zatím nefunguje.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows XP Opera 9.80  |  [89.103.83.---]

Nicméně zatím asi nejlepší rada, posunul jsem se kupředu :)

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Linux Firefox 20.0
 |   |  Microsoft Windows 8 Chrome 26.0.1410.64  |  [89.103.41.---]

Na to ti jeden regulární výraz stačit nebude. Začal bych třeba takto:find / -type f -name "*.txt" pak to poslal na awk, aby to poslalo dál jen text mezi slovy odstavec 1 a odstavec 2 (nebo si najít na kterých řádcích jsou ona slova a vhodně využít tail +-X|head -X), pak třeba pomocí tr zaměnit '\n' za mezeru a grepem vyhledat jablko. Přepínač -l tj. grep -l umožňuje grepu "lézt" rovnou do souborů, problém je, že pouze kontroluje výskyt na řádku.

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Regulární výraz, Vyhledání



Určitě si přečtěte