mojaSymfonia FORUM
https://forum.mix-soft.pl/

regular - jak wyszukać
https://forum.mix-soft.pl/viewtopic.php?f=15&t=8009
Strona 1 z 2

Autor:  zz [ 2017-07-21, 01:08 ]
Tytuł:  regular - jak wyszukać

Witam.
Mam plik tekstowy, gdzie m.in. znajdują się dane jak poniżej (rozstrzelone spacjami - bo tekst rozpoznany OCR-em)

...
Zam. nabywcy : 1234/2017
...
... wg specyfikacji:

Ilość Cena netto Wartość
za 1000 sztuk netto
Towar 1 Typ: ABCDE 111 x 222 500 2222,00 1111,00
Parametr: 0060/0530/0060
Przewidywany termin dostawy: 11.07.2017

i tak kilka razy

Muszę znaleźć
nr zamówienia nabywcy
Typ (czyli np. ABCDE) i kolejne dane 111 222 500 2222,00 1111,00

i jeszcze skojarzyć to z wysłanymi zam.wł. (czyli zam nabywcy w tekście)

myślę zrobić to tak:
w pętli lecieć po ZMW i find numer w buf
ale jak potem wyszukać interesujące mnie dane?
(nawet nie wiem jaki znak tam jest Enterem - jak to sprawdzić)

Autor:  rafal [ 2017-07-24, 16:04 ]
Tytuł:  Re: regular - jak wyszukać

a jakie jest pytanie?

Autor:  zz [ 2017-07-25, 13:43 ]
Tytuł:  Re: regular - jak wyszukać

pytanie nr 1
jak zamienić ciąg spacji w jedną spację?

Autor:  rafal [ 2017-07-25, 20:25 ]
Tytuł:  Re: regular - jak wyszukać

Kod:
buf = "moja              Symfonia            forum użytkowników"
while delete regular ":b++"
insert " "
move 1
wend
print buf

Autor:  zz [ 2017-07-26, 12:34 ]
Tytuł:  Re: regular - jak wyszukać

Dzięki.
Co prawda wycięło mi też znaki końca linii...

pyt.2. mam wrażenie, że kilka operacji na zmiennej buf 'miesza' AmBasicowi

poniżej fragm. kodu - nie usuwa mi tekstu 'jakis napis'

Kod:
int f = open "c:\\temp\\dane.txt" for input
string sLinia, sKasuj="", s0, s1, s2, s3, s4, s5, s6, s7, s8, s9

While (input #f, sLinia) != 0
   buf=sLinia
   while delete regular ":b++"
      insert " "
      move 1
   wend

message buf
   skasuj=Delete "jakis napis"
message buf
   find regular "{*} {*} {*} {*} {*} {*} {*} {*} {*} {*}" //$"    
   s0 = regular 0
   s1 =  regular 1   
   s2 = regular 2
   s3 =  regular 3
   s4 = regular 4
   s5 =  regular 5
   s6 = regular 6
   s7 =  regular 7
   s8 = regular 8
   s9 =  regular 9
   
   message s1 + " : " +s2+ " : " +s3+ " : " +s4+ " : " +s5+ " : " +s6+ " : " +s7

wend


plik dane.txt
Kod:
jakis napis             zzz:             aaaa     1610 x 650                              400   1020,00      426,97
jakis napis             zzz:             bbbb     1610 x 650                              400   1020,00      426,97
jakis napis             zzz:             cccc     1610 x 650                              400   1020,00      426,97

Autor:  rafal [ 2017-07-26, 12:56 ]
Tytuł:  Re: regular - jak wyszukać

zz pisze:
Dzięki.
Co prawda wycięło mi też znaki końca linii...


:b kasuje wszystkie tzw białe znaki (spacje, tabulacje, entery...). Jest odpowienikiem klasy ([ \t\r\n]#)

czyli kod nie kasujący enterów

Kod:
buf = "moja              Symfonia            forum użytkowników"
while delete regular "([ \t]#)++"
insert " "
move 1
wend
print buf

Autor:  rafal [ 2017-07-26, 12:59 ]
Tytuł:  Re: regular - jak wyszukać

zz pisze:
pyt.2. mam wrażenie, że kilka operacji na zmiennej buf 'miesza' AmBasicowi

poniżej fragm. kodu - nie usuwa mi tekstu 'jakis napis'


używaj delete regular

Autor:  zz [ 2017-07-28, 00:46 ]
Tytuł:  Re: regular - jak wyszukać

2. dzięki

a jak wyszukać kolejne pliki np. *.txt
bo z helpa ani z http://www.forum.mojasymfonia.pl/viewtopic.php?f=15&t=904

nie mogę dojść, próbowałem

Kod:
string sTekst="", sPlik=""
string sSciezka="C:\\temp\\"
sPlik=find file sSciezka+ "*.txt"
sTekst=sTekst+sPlik
while sPlik
   find next file
   sTekst=sTekst+sPlik
wend
print sTekst

Autor:  rafal [ 2017-07-28, 08:27 ]
Tytuł:  Re: regular - jak wyszukać

viewtopic.php?p=20071#p20071

Autor:  zz [ 2017-07-28, 11:58 ]
Tytuł:  Re: regular - jak wyszukać

to mi nie zadziałało, natomiast działa twoje:
http://www.forum.mojasymfonia.pl/viewtopic.php?f=15&t=1249

Autor:  zz [ 2017-09-22, 11:18 ]
Tytuł:  Re: regular - jak wyszukać

Jeszcze kolejna sprawa:

jak wpisać regulara na:
'jeśli nie ma czegokolwiek" (takie angielskie)
bo nie może być puste pole do sprawdzenia

Autor:  rafal [ 2017-09-22, 11:36 ]
Tytuł:  Re: regular - jak wyszukać

przykład podaj.

i zmień w profilu na forum swój e-mail na aktualny to będziesz dostawał powiadomienia o odpowiedziach.

Autor:  zz [ 2017-09-25, 09:43 ]
Tytuł:  Re: regular - jak wyszukać

Dzięki za poradę, zaktualizowałem dane.

w tym konkretnym przypadku nie chodzi o Symfonię
w systemie zgłoszeniowym OTRS muszę zamknąć zgłoszenia które mają puste pole temat,
formularz filtra nie pozwala zostawić pustego pola a (podobno) można użyć wyrażeń regularnych.
Więc muszę znaleźć regular na 'brak czegokolwiek' ;(

Autor:  zz [ 2018-02-02, 15:07 ]
Tytuł:  Re: regular - jak wyszukać

a jak wyszukać ciągi oddzielone wieloma spacjami czyli np.

______aaa___bbb______ccc____ddd__<enter>

(podkreślenie dałem jako spację)

próbowałem np. ^\s+{*}\s+{*}... i inne jakie znalazłem i nic z tego :(

Autor:  rafal [ 2018-02-03, 14:41 ]
Tytuł:  Re: regular - jak wyszukać

użyj [:b]# - oznacza dowolną ilość znaków białych

Strona 1 z 2 Strefa czasowa UTC+1godz. [letni]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/