forked from miczar1/djfz-24_25
Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
dcdcad4cf6 |
@ -1,14 +0,0 @@
|
|||||||
def contains_word_hamlet(line):
|
|
||||||
target = "Hamlet"
|
|
||||||
line_length = len(line)
|
|
||||||
target_length = len(target)
|
|
||||||
|
|
||||||
for i in range(line_length - target_length + 1):
|
|
||||||
if line[i:i + target_length] == target:
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
with open('/Users/jwieczor/Desktop/djfz-24_25-jezyki-1/TaskA01/simple.in', 'r') as file:
|
|
||||||
for line in file:
|
|
||||||
if contains_word_hamlet(line):
|
|
||||||
print(line, end='')
|
|
@ -1,15 +0,0 @@
|
|||||||
def contains_word_hamlet(line):
|
|
||||||
target = "pies"
|
|
||||||
line_lower = line.lower()
|
|
||||||
line_length = len(line_lower)
|
|
||||||
target_length = len(target)
|
|
||||||
|
|
||||||
for i in range(line_length - target_length + 1):
|
|
||||||
if line_lower[i:i + target_length] == target:
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
with open('/Users/jwieczor/Desktop/djfz-24_25-jezyki-1/TaskA02/simple.in', 'r') as file:
|
|
||||||
for line in file:
|
|
||||||
if contains_word_hamlet(line):
|
|
||||||
print(line, end='')
|
|
@ -1,32 +0,0 @@
|
|||||||
def is_numeric(s):
|
|
||||||
for char in s:
|
|
||||||
if char < '0' or char > '9':
|
|
||||||
return False
|
|
||||||
return True
|
|
||||||
|
|
||||||
def find_lines_with_date_from_file(filename):
|
|
||||||
result = []
|
|
||||||
|
|
||||||
with open(filename, 'r', encoding='utf-8') as file:
|
|
||||||
lines = file.readlines()
|
|
||||||
|
|
||||||
for line in lines:
|
|
||||||
i = 0
|
|
||||||
while i < len(line):
|
|
||||||
if i + 3 < len(line):
|
|
||||||
year_candidate = line[i:i+4]
|
|
||||||
if is_numeric(year_candidate):
|
|
||||||
year = int(year_candidate)
|
|
||||||
if 1900 <= year <= 1999:
|
|
||||||
if i + 6 < len(line) and line[i+4] == ' ' and line[i+5:i+7] == 'r.':
|
|
||||||
result.append(line.strip())
|
|
||||||
break
|
|
||||||
i += 1
|
|
||||||
|
|
||||||
return result
|
|
||||||
|
|
||||||
filename = 'TaskA03/simple.in'
|
|
||||||
output = find_lines_with_date_from_file(filename)
|
|
||||||
|
|
||||||
for line in output:
|
|
||||||
print(line)
|
|
@ -1,35 +0,0 @@
|
|||||||
def extract_numbers(line):
|
|
||||||
numbers = []
|
|
||||||
current_number = ""
|
|
||||||
|
|
||||||
for char in line:
|
|
||||||
# Sprawdzamy, czy znak jest cyfrą (ASCII dla cyfr to 48-57)
|
|
||||||
if '0' <= char <= '9':
|
|
||||||
current_number += char
|
|
||||||
else:
|
|
||||||
if current_number: # Jeśli obecna liczba została zakończona
|
|
||||||
numbers.append(current_number)
|
|
||||||
current_number = "" # Resetujemy licznik
|
|
||||||
|
|
||||||
# Dodajemy ostatnią liczbę, jeśli linia kończy się na cyfry
|
|
||||||
if current_number:
|
|
||||||
numbers.append(current_number)
|
|
||||||
|
|
||||||
# Ręczna implementacja metody join
|
|
||||||
result = ""
|
|
||||||
for i in range(len(numbers)):
|
|
||||||
result += numbers[i]
|
|
||||||
if i < len(numbers) - 1: # Dodajemy spację między liczbami
|
|
||||||
result += " "
|
|
||||||
|
|
||||||
return result
|
|
||||||
|
|
||||||
|
|
||||||
# Przetwarzanie danych wejściowych z pliku
|
|
||||||
input_file = '/Users/jwieczor/Desktop/djfz-24_25-jezyki-1/TaskA04/simple.in'
|
|
||||||
|
|
||||||
with open(input_file, 'r') as file:
|
|
||||||
for line in file:
|
|
||||||
result = extract_numbers(line.strip()) # Usuwamy końcowe białe znaki
|
|
||||||
if result: # Wypisujemy tylko linie, które mają liczby
|
|
||||||
print(result)
|
|
5
TaskB01/description.txt
Normal file
5
TaskB01/description.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Write a program to find lines containing the word "Hamlet".
|
||||||
|
Make use of regular expressions.
|
||||||
|
|
||||||
|
POINTS: 1
|
||||||
|
DEADLINE: 08-12-2024 23:59:59
|
106
TaskB01/shakespeare.exp
Normal file
106
TaskB01/shakespeare.exp
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
CLAUDIUS, King of Denmark, Hamlet’s uncle.
|
||||||
|
The GHOST of the late king, Hamlet’s father.
|
||||||
|
GERTRUDE, the Queen, Hamlet’s mother, now wife of Claudius.
|
||||||
|
HORATIO, Friend to Hamlet.
|
||||||
|
Dar’d to the combat; in which our valiant Hamlet,
|
||||||
|
His fell to Hamlet. Now, sir, young Fortinbras,
|
||||||
|
Unto young Hamlet; for upon my life,
|
||||||
|
Enter Claudius King of Denmark, Gertrude the Queen, Hamlet, Polonius,
|
||||||
|
Though yet of Hamlet our dear brother’s death
|
||||||
|
But now, my cousin Hamlet, and my son—
|
||||||
|
Good Hamlet, cast thy nighted colour off,
|
||||||
|
’Tis sweet and commendable in your nature, Hamlet,
|
||||||
|
Let not thy mother lose her prayers, Hamlet.
|
||||||
|
This gentle and unforc’d accord of Hamlet
|
||||||
|
[_Exeunt all but Hamlet._]
|
||||||
|
For Hamlet, and the trifling of his favour,
|
||||||
|
So please you, something touching the Lord Hamlet.
|
||||||
|
Than a command to parley. For Lord Hamlet,
|
||||||
|
As to give words or talk with the Lord Hamlet.
|
||||||
|
Enter Hamlet, Horatio and Marcellus.
|
||||||
|
That I will speak to thee. I’ll call thee Hamlet,
|
||||||
|
[_Ghost beckons Hamlet._]
|
||||||
|
[_Exeunt Ghost and Hamlet._]
|
||||||
|
Enter Ghost and Hamlet.
|
||||||
|
Wouldst thou not stir in this. Now, Hamlet, hear.
|
||||||
|
O Hamlet, what a falling off was there,
|
||||||
|
Adieu, adieu, adieu. Hamlet, remember me.
|
||||||
|
[_Within._] Lord Hamlet.
|
||||||
|
And what so poor a man as Hamlet is
|
||||||
|
Lord Hamlet, with his doublet all unbrac’d,
|
||||||
|
Of Hamlet’s transformation; so I call it,
|
||||||
|
And bring these gentlemen where Hamlet is.
|
||||||
|
The very cause of Hamlet’s lunacy.
|
||||||
|
Came this from Hamlet to her?
|
||||||
|
‘Lord Hamlet is a prince, out of thy star.
|
||||||
|
Enter Hamlet, reading.
|
||||||
|
How does my good Lord Hamlet?
|
||||||
|
You go to seek the Lord Hamlet; there he is.
|
||||||
|
For we have closely sent for Hamlet hither,
|
||||||
|
Of Hamlet’s wildness: so shall I hope your virtues
|
||||||
|
Enter Hamlet.
|
||||||
|
You need not tell us what Lord Hamlet said,
|
||||||
|
Enter Hamlet and certain Players.
|
||||||
|
How fares our cousin Hamlet?
|
||||||
|
I have nothing with this answer, Hamlet; these words are not mine.
|
||||||
|
Come hither, my dear Hamlet, sit by me.
|
||||||
|
[_Exeunt all but Hamlet and Horatio._]
|
||||||
|
[_Exeunt all but Hamlet._]
|
||||||
|
Enter Hamlet.
|
||||||
|
Enter Hamlet.
|
||||||
|
Hamlet, thou hast thy father much offended.
|
||||||
|
Why, how now, Hamlet?
|
||||||
|
O Hamlet, speak no more.
|
||||||
|
No more, sweet Hamlet.
|
||||||
|
Speak to her, Hamlet.
|
||||||
|
O Hamlet, thou hast cleft my heart in twain.
|
||||||
|
[_Exit Hamlet dragging out Polonius._]
|
||||||
|
What, Gertrude? How does Hamlet?
|
||||||
|
Hamlet in madness hath Polonius slain,
|
||||||
|
Enter Hamlet.
|
||||||
|
[_Within._] Hamlet! Lord Hamlet!
|
||||||
|
What noise? Who calls on Hamlet? O, here they come.
|
||||||
|
Enter Hamlet and Guildenstern.
|
||||||
|
Now, Hamlet, where’s Polonius?
|
||||||
|
Hamlet, this deed, for thine especial safety,—
|
||||||
|
Ay, Hamlet.
|
||||||
|
Thy loving father, Hamlet.
|
||||||
|
The present death of Hamlet. Do it, England;
|
||||||
|
Enter Hamlet, Rosencrantz, Guildenstern &c.
|
||||||
|
[_Exeunt all but Hamlet._]
|
||||||
|
I should be greeted, if not from Lord Hamlet.
|
||||||
|
Letters, my lord, from Hamlet.
|
||||||
|
From Hamlet! Who brought them?
|
||||||
|
’Tis Hamlet’s character. ’Naked!’
|
||||||
|
And that in Hamlet’s hearing, for a quality
|
||||||
|
Did Hamlet so envenom with his envy
|
||||||
|
Hamlet comes back: what would you undertake
|
||||||
|
Hamlet return’d shall know you are come home:
|
||||||
|
Enter Hamlet and Horatio, at a distance.
|
||||||
|
Hamlet o’ercame Fortinbras.
|
||||||
|
that young Hamlet was born,—he that is mad, and sent into England.
|
||||||
|
I hop’d thou shouldst have been my Hamlet’s wife;
|
||||||
|
Hamlet the Dane.
|
||||||
|
Hamlet! Hamlet!
|
||||||
|
Enter Hamlet and Horatio.
|
||||||
|
[_Hamlet moves him to put on his hat._]
|
||||||
|
Come, Hamlet, come, and take this hand from me.
|
||||||
|
[_The King puts Laertes’s hand into Hamlet’s._]
|
||||||
|
Was’t Hamlet wrong’d Laertes? Never Hamlet.
|
||||||
|
If Hamlet from himself be ta’en away,
|
||||||
|
Then Hamlet does it not, Hamlet denies it.
|
||||||
|
Hamlet is of the faction that is wrong’d;
|
||||||
|
His madness is poor Hamlet’s enemy.
|
||||||
|
Give them the foils, young Osric. Cousin Hamlet,
|
||||||
|
If Hamlet give the first or second hit,
|
||||||
|
The King shall drink to Hamlet’s better breath,
|
||||||
|
‘Now the King drinks to Hamlet.’ Come, begin.
|
||||||
|
Stay, give me drink. Hamlet, this pearl is thine;
|
||||||
|
Here, Hamlet, take my napkin, rub thy brows.
|
||||||
|
The Queen carouses to thy fortune, Hamlet.
|
||||||
|
[_Laertes wounds Hamlet; then, in scuffling, they change rapiers, and
|
||||||
|
Hamlet wounds Laertes._]
|
||||||
|
No, no, the drink, the drink! O my dear Hamlet!
|
||||||
|
It is here, Hamlet. Hamlet, thou art slain.
|
||||||
|
Exchange forgiveness with me, noble Hamlet.
|
||||||
|
Bear Hamlet like a soldier to the stage,
|
169442
TaskB01/shakespeare.in
Normal file
169442
TaskB01/shakespeare.in
Normal file
File diff suppressed because it is too large
Load Diff
2
TaskB01/simple.exp
Normal file
2
TaskB01/simple.exp
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
Here comes Hamlet
|
||||||
|
Hamlet Hamlet again
|
3
TaskB01/simple.in
Normal file
3
TaskB01/simple.in
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
Here comes Hamlet
|
||||||
|
ABC
|
||||||
|
Hamlet Hamlet again
|
7
TaskB02/description.txt
Normal file
7
TaskB02/description.txt
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
Write a program to find lines containing the word "pies" separated by spaces.
|
||||||
|
The word does not need to have space on the left if it is the line beginning or space on the right if it is line ending.
|
||||||
|
Return line no matter of word "pies" casing.
|
||||||
|
Make use of regular expressions.
|
||||||
|
|
||||||
|
POINTS: 1
|
||||||
|
DEADLINE: 08-12-2024 23:59:59
|
13
TaskB02/polish_wiki_excerpt.exp
Normal file
13
TaskB02/polish_wiki_excerpt.exp
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
Pies ten pochodzi z południowych Chin, z terenów prowincji Guangdong. Został rozpropagowany i hodowany w celach wystawowych przez hodowców w USA. Nazwa psa, pochodząca z chińskiego "shā pí" (沙皮), oznacza dosłownie "piaszczysta skóra".
|
||||||
|
Chart polski – polska rasa psa myśliwskiego, znana prawdopodobnie od czasów Galla Anonima, zaliczana do grupy chartów. Dawniej użytkowana była przede wszystkim do polowań, obecnie jako pies reprezentacyjny.
|
||||||
|
Smukły pies o wąskim pysku. Chart polski jest wyraźnie mocniejszy i nie tak finezyjny w kształtach jak inne charty. Jest najwyższą z polskich ras.
|
||||||
|
Chart polski to pies silny, wytrzymały, o dobrze zbalansowanym ciele i proporcjach (wpisany jest w prostokąt oparty na dłuższym boku) pozwalających nie tylko na szybki galop, ale i na pokonywanie dużych odległości wyciągniętym kłusem. Jest psem o okrywie włosowej dobrze chroniącej go przed zimnem, wilgocią i wiatrem.
|
||||||
|
Pies wymagający sporej dawki codziennego ruchu, stąd jest idealnym towarzyszem dla ludzi uprawiających jeździectwo lub jogging.
|
||||||
|
W filmie występuje pies rasy landseer.
|
||||||
|
Bohaterami anime jest grupa łowców nagród, podróżująca statkiem kosmicznym o nazwie "Bebop": Spike Spiegel, Faye Valentine, Jet Black, haker Ed oraz genetycznie zmodyfikowany pies Ein.
|
||||||
|
Tytułowym głównym bohaterem serii jest Lucky Luke - kowboj, najszybszy rewolwerowiec na Dzikim Zachodzie i najgorszy koszmar braci Dalton. Zawsze, gdy planują oni skok na bank lub inne przestępstwo, dzielny stróż prawa staje im na drodze. W jego przygodach towarzyszą mu inteligentny koń Jolly Jumper i pies Bzik (we francuskojęzycznym oryginale: "Rantanplan").
|
||||||
|
Serial w krzywym zwierciadle przedstawia życie typowej amerykańskiej rodziny. Jej głową i jedynym żywicielem jest wiecznie sfrustrowany sprzedawca butów, Al Bundy. Kocha swojego starego dodge'a, wolny czas spędza siedząc na kanapie, oglądając telewizję i pijąc piwo lub na posiedzeniach w toalecie. Jego małżonką jest Peggy, która całymi dniami przesiaduje przed telewizorem, oglądając "The Oprah Winfrey Show", i The Phil Donahue Show zajadając się popcornem i czekoladkami, paląc przy tym papierosa za papierosem. O jej podejściu do typowo domowych zajęć świadczą zadawane przez nią pytania, np. o odkurzacz – "Jak się nazywa to coś, co ciągniesz po dywanie, a ono buczy?" Tytułowymi dziećmi są nastoletni Bud oraz Kelly, którzy nie przepadają za sobą i nie przepuszczą żadnej okazji, aby sobie dokuczyć czy donieść na siebie. Kelly i Bud dojrzewają w trakcie trwania serialu, przez co trochę się zmieniają: Bud z wrednego kilkunastolatka przeistacza się w nastoletniego macho, którego nie chce żadna dziewczyna, a Kelly z każdą serią staje się coraz mniej inteligentna. Wiecznie niedocenianym członkiem rodziny jest pies Buck, który jednak żyje swoim życiem i sam troszczy się o siebie. W trakcie wszystkich dziesięciu lat trwania serialu Bundym towarzyszy dwójka sąsiadów: Marcy, najpierw ze swoim pierwszym mężem, Steve'em Rhoadesem, a następnie z Jeffersonem d'Arcym. Marcy lubi przebywać z Peggy, jest za to na bakier z Alem, natomiast Al utrzymuje dobre stosunki z mężami Marcy, szczególnie Jeffersonem – Steve raczej nie darzył Bundych tak bezwzględną sympatią.
|
||||||
|
Buck (prawdziwe imię Michael; trener Steven Ritt) to pies rodziny Bundych, Briard. Głosu użycza mu Kevin Curran, a w odcinkach specjalnych Cheech Marin. Zdechł w wieku dwunastu lat (w 1996 roku Michael przeszedł na emeryturę, zdechł dziewięć miesięcy po tym, jak Bucka uśmiercono w serialu).
|
||||||
|
Lucky to drugi pies rodziny Bundych, spaniel, reinkarnacja Bucka.
|
||||||
|
20 stycznia 1974 r. o godz. 10.40 w Dolinie Mięguszowieckiej wydarzyła się największa jak do owej pory katastrofa lawinowa w Tatrach. Żlebem spod Przełęczy nad Skokiem w Grani Baszt zeszła potężna lawina, która przewaliła się przez Mięguszowiecki Potok i wdarła 140 m na przeciwległy stok, wspinając się na niego z rozpędu aż 44 m w górę. Na stoku tym, na śnieżnym pólku trenowali z instruktorem uczestnicy kursu narciarskiego ze słowackiego Technikum Budowlanego. Lawina przysypała 24 z nich. Dzięki błyskawicznej akcji ratunkowej (było to tylko 400 m od schroniska nad Popradzkim Stawem) udało się odgrzebać spod śniegu 11 płycej przywalonych. W ciągu następnych godzin i kilku dni liczne zespoły ratunkowe (z pomocą przyszło również wojsko) odgrzebały ciała 10 uczestników kursu; wśród nich nauczyciela z 12-letnim synem. Pies wskazał miejsce, gdzie po 5 godzinach od zejścia lawiny wydobyto żywego 18-latka przywalonego metrową warstwą śniegu. Ciała dwóch uczniów udało się znaleźć dopiero wiosną po stopieniu się śniegu.
|
||||||
|
Początkowo Morris wykorzystał w swoich komiksach historycznych braci Daltonów Grat, Bill i Emmett, których przedstawił jako bardzo groźnych i inteligentnych przestępców. Niestety po pierwszym spotkaniu z Lucky Luke, zostali aresztowani i skazani w więzieniu na śmierć. Morris żałował potem swojej decyzji i wraz z Gościnnym wprowadził na ich miejsce, czwórkę kuzynów (także) Daltonów – Joe, Williama, Jacka i Averelle, którzy byli przeciwieństwem swoich kuzynów. Wiecznie pechowi, gamoniowaci i niezbyt inteligentni. Wkrótce stali się oni najpopularniejszymi postaciami w serii, zaraz po samym Lucky Luke i z czasem dołączył do nich pies Rantanplan. Doczekali się także solowego filmu dystrybuowanego w Polsce pt. "Lucky Luke" (oryg. "Les Dalton").
|
50000
TaskB02/polish_wiki_excerpt.in
Normal file
50000
TaskB02/polish_wiki_excerpt.in
Normal file
File diff suppressed because one or more lines are too long
3
TaskB02/simple.exp
Normal file
3
TaskB02/simple.exp
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
Pies ma Alę
|
||||||
|
Kot i pies to zwierzęta
|
||||||
|
pies
|
5
TaskB02/simple.in
Normal file
5
TaskB02/simple.in
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Pies ma Alę
|
||||||
|
Ala ma psa
|
||||||
|
tu nic nie ma
|
||||||
|
Kot i pies to zwierzęta
|
||||||
|
pies
|
6
TaskB03/description.txt
Normal file
6
TaskB03/description.txt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
Write a program to find lines containing date from 1900 to 1999 in format '19XX r.' no matter what on the left or right of the expression.
|
||||||
|
Note that part ' r.' is obligatory.
|
||||||
|
Make use of regular expressions.
|
||||||
|
|
||||||
|
POINTS: 2
|
||||||
|
DEADLINE: 08-12-2024 23:59:59
|
951
TaskB03/polish_wiki_excerpt.exp
Normal file
951
TaskB03/polish_wiki_excerpt.exp
Normal file
File diff suppressed because one or more lines are too long
1
TaskB03/polish_wiki_excerpt.in
Symbolic link
1
TaskB03/polish_wiki_excerpt.in
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../TaskA02/polish_wiki_excerpt.in
|
3
TaskB03/simple.exp
Normal file
3
TaskB03/simple.exp
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
Kiedyś był 1934 r.
|
||||||
|
Kiedyś był 1934 r.fsdfsdfsdf
|
||||||
|
1934 r. to jakaś data
|
5
TaskB03/simple.in
Normal file
5
TaskB03/simple.in
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Kiedyś był 1934 r.
|
||||||
|
Kiedyś był 1934 r.fsdfsdfsdf
|
||||||
|
Kiedyś był 1935 rok
|
||||||
|
1934 r. to jakaś data
|
||||||
|
1934 to też jakaś data
|
6
TaskB04/description.txt
Normal file
6
TaskB04/description.txt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
Write a program to find all maximum substrings of digits.
|
||||||
|
Return only these substrings separated by spaces in their order.
|
||||||
|
Make use of regular expressions.
|
||||||
|
|
||||||
|
POINTS: 2
|
||||||
|
DEADLINE: 08-12-2024 23:59:59
|
19939
TaskB04/polish_wiki_excerpt.exp
Normal file
19939
TaskB04/polish_wiki_excerpt.exp
Normal file
File diff suppressed because it is too large
Load Diff
1
TaskB04/polish_wiki_excerpt.in
Symbolic link
1
TaskB04/polish_wiki_excerpt.in
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../TaskA02/polish_wiki_excerpt.in
|
4
TaskB04/simple.exp
Normal file
4
TaskB04/simple.exp
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
34234 34 5
|
||||||
|
34535
|
||||||
|
34
|
||||||
|
1992 1999
|
5
TaskB04/simple.in
Normal file
5
TaskB04/simple.in
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
34234 34 dfd gfd 5
|
||||||
|
34535
|
||||||
|
fsdflskfjsdflk
|
||||||
|
fsdkfj sdf34fdfd
|
||||||
|
Firma powstała w 1992 r., z połączenia Authorware, Inc. (twórców pakietu Authorware) i MacroMind-Paracomp (producenta Macromind Director). W 1999 r. Macromedia zakupiła firmę Allaire i jej bi
|
602
lab-02.ipynb
Normal file
602
lab-02.ipynb
Normal file
@ -0,0 +1,602 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"source": [
|
||||||
|
"# Języki formalne i złożoność obliczeniowa\n",
|
||||||
|
"## Część 1: Wprowadzenie do biblioteki re\n"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "f5376d249e31d5aa"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"source": [
|
||||||
|
"Wyrażenia regularne będziemy robić na podstawie języka python3. Dokumentacja: https://docs.python.org/3.11/library/re.html\n",
|
||||||
|
"\n",
|
||||||
|
"Użyteczna strona do testowania wyrażeń regularnych: https://regex101.com/\n"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "ce091d4ec144df32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"source": [
|
||||||
|
"# Podstawowe funkcje"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "35428280eb1f704"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"source": [
|
||||||
|
"## Match\n",
|
||||||
|
"match - zwraca dopasowanie od początku stringa"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "9674be284007455d"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"import re\n",
|
||||||
|
"wynik = re.match(r'Ala', 'Ala ma kota. Kot ma Alę.')\n",
|
||||||
|
"print(wynik)\n",
|
||||||
|
"print(f\"Dopasowano: '{wynik.group()}', początek: {wynik.start()}, koniec: {wynik.end()}\")\n"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "fa7637b60ae679b5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"source": [
|
||||||
|
"## Search\n",
|
||||||
|
"search - zwraca pierwsze dopasowanie w napisie\n"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "626c591ab52a086"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"# search\n",
|
||||||
|
"wynik = re.search(r'ni', 'Może nie najtaniej, ale jako tako.')\n",
|
||||||
|
"\n",
|
||||||
|
"if wynik:\n",
|
||||||
|
" print(f\"Dopasowano: '{wynik.group()}', początek: {wynik.start()}, koniec: {wynik.end()}\")\n",
|
||||||
|
"else:\n",
|
||||||
|
" print('Nie znaleziono szukanego ciągu znaków.')"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "4f5d7077a85b7108"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"tekst = \"Kto zakłóca ciszę nocną musi ponieść karę: 100 batów!\"\n",
|
||||||
|
"\n",
|
||||||
|
"wzorzec = re.compile('ci')\n",
|
||||||
|
"\n",
|
||||||
|
"wynik = wzorzec.search(tekst)\n",
|
||||||
|
"\n",
|
||||||
|
"if wynik:\n",
|
||||||
|
" print(f\"Dopasowano: '{wynik.group()}', początek: {wynik.start()}, koniec: {wynik.end()}\")\n",
|
||||||
|
"else:\n",
|
||||||
|
" print('Nie znaleziono szukanego ciągu znaków.')"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "b9da286f8d6936fb"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"source": [
|
||||||
|
"## findall\n",
|
||||||
|
"findall - zwraca listę wszystkich dopasowań\n"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "600b87dd6af48c04"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"# findall\n",
|
||||||
|
"wzorzec = re.compile('o')\n",
|
||||||
|
"\n",
|
||||||
|
"wynik = wzorzec.findall(tekst)\n",
|
||||||
|
"\n",
|
||||||
|
"if len(wynik) > 0:\n",
|
||||||
|
" print(type(wynik))\n",
|
||||||
|
" print(f'Dopasowano: {wynik}')\n",
|
||||||
|
"else:\n",
|
||||||
|
" print(f'{wynik} Nie znaleziono szukanego ciągu znaków.')"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "37a93d9d61c6178d"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"wzorzec = re.compile('o')\n",
|
||||||
|
"\n",
|
||||||
|
"wynik = wzorzec.finditer(tekst)\n",
|
||||||
|
"for w in wynik:\n",
|
||||||
|
" print(type(w))\n",
|
||||||
|
" print(f'Dopasowano: \"{w.group()}\", początek: {w.start()}, koniec: {w.end()}')"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "3232906632de2fe1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"source": [
|
||||||
|
"*Uwaga*: pobierając z iteratora elementy, usuwamy je, nie można zatem ponownie się do nich odwołać."
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "62e8a0370ee58827"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"source": [
|
||||||
|
"## Użycie przedrostka 'r' w wyrażeniach regularnych w Pythonie\n",
|
||||||
|
"\n",
|
||||||
|
"W Pythonie przedrostek `r` przed łańcuchem znaków oznacza \"surowy\" łańcuch znaków (ang. *raw string*). Dlaczego jest to przydatne w kontekście wyrażeń regularnych?\n",
|
||||||
|
"\n",
|
||||||
|
"Wyrażenia regularne często używają znaków specjalnych, takich jak `\\d`, `\\w`, `\\b` itp. W standardowych łańcuchach znaków w Pythonie, znaki te mają specjalne znaczenie. Na przykład, `\\t` oznacza tabulację, a `\\n` oznacza nową linię.\n",
|
||||||
|
"\n",
|
||||||
|
"Jeśli chcemy użyć takiego wyrażenia regularnego w Pythonie, musielibyśmy podwajać znaki ukośnika, aby uniknąć konfliktu z wbudowanymi sekwencjami ucieczki w łańcuchach znaków, np. `\\\\d`, `\\\\w`."
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "6342ff85cd5fc35a"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"# Bez użycia surowego łańcucha znaków\n",
|
||||||
|
"result1 = re.findall(\"\\\\d+\", \"123 abc 456\")\n",
|
||||||
|
"print(result1)\n",
|
||||||
|
"\n",
|
||||||
|
"# Używając surowego łańcucha znaków\n",
|
||||||
|
"result2 = re.findall(r\"\\d+\", \"123 abc 456\")\n",
|
||||||
|
"print(result2)\n"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "b09fa3103ec18719"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"source": [
|
||||||
|
"## sub\n",
|
||||||
|
"Kolejną użyteczną metodą jest sub(), która pozwala na zmianę wzorca na inny ciąg znaków:"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "e9e3f41e90bbd746"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"wzorzec = re.compile(r'ni')\n",
|
||||||
|
"\n",
|
||||||
|
"zmieniony = wzorzec.sub('Ni!', tekst)\n",
|
||||||
|
"print(zmieniony)"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "af633211d7faca67"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"source": [
|
||||||
|
"## split\n",
|
||||||
|
"split - dzieli napis na podstawie wzorca"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "ea9205aa03ed7476"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"wzorzec = re.compile(r' ')\n",
|
||||||
|
"\n",
|
||||||
|
"wynik = wzorzec.split(tekst)\n",
|
||||||
|
"print(f'Uzyskano {len(wynik)} wyniki/ów.')\n",
|
||||||
|
"for w in wynik:\n",
|
||||||
|
" print(w)"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "71dc3b254a93f31c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"source": [
|
||||||
|
"# Metaznaki\n",
|
||||||
|
"[] - zbiór znaków\n",
|
||||||
|
"\n",
|
||||||
|
". - jakikolwiek znak\n",
|
||||||
|
"\n",
|
||||||
|
"^ - początek napisu\n",
|
||||||
|
"\n",
|
||||||
|
"$ - koniec napisu\n",
|
||||||
|
"\n",
|
||||||
|
"? - znak występuje lub nie występuje\n",
|
||||||
|
"\n",
|
||||||
|
"\\* - zero albo więcej pojawień się\n",
|
||||||
|
"\n",
|
||||||
|
"\\+ - jeden albo więcej pojawień się\n",
|
||||||
|
"\n",
|
||||||
|
"{} - dokładnie tyle pojawień się\n",
|
||||||
|
"\n",
|
||||||
|
"| - lub\n",
|
||||||
|
"\n",
|
||||||
|
"() - grupa\n",
|
||||||
|
"\n",
|
||||||
|
"\\ - znak ucieczki\n",
|
||||||
|
"\n",
|
||||||
|
"\\d digit\n",
|
||||||
|
"\n",
|
||||||
|
"\\D nie digit\n",
|
||||||
|
"\n",
|
||||||
|
"\\s whitespace\n",
|
||||||
|
"\n",
|
||||||
|
"\\S niewhitespace"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "4b16abb6848f09ae"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"wzorzec = re.compile(r'.')\n",
|
||||||
|
"print(wzorzec.findall(tekst))"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "ac6669cac4f52d27"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"# jeden lub wiecej / zero lub wiecej\n",
|
||||||
|
"\n",
|
||||||
|
"tekst = \"BCAAABGTAABBBCCTTSAGG4324242\"\n",
|
||||||
|
"print(f'Łańcuch: {tekst}')\n",
|
||||||
|
"wzorzec = re.compile(r'X+')\n",
|
||||||
|
"print(f'Jeden lub więcej X: {wzorzec.findall(tekst)}')\n",
|
||||||
|
"wzorzec = re.compile(r'X*')\n",
|
||||||
|
"print(f'Zero lub więcej X: {wzorzec.findall(tekst)}')"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "634e4b66a5081f97"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"# zero lub jeden\n",
|
||||||
|
"\n",
|
||||||
|
"print(f'Łańcuch: {tekst}')\n",
|
||||||
|
"wzorzec = re.compile(r'.?')\n",
|
||||||
|
"print(wzorzec.findall(tekst))\n",
|
||||||
|
"wzorzec = re.compile(r'.?T')\n",
|
||||||
|
"print(wzorzec.findall(tekst))"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "44195e00a81b23fb"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"print(f'Łańcuch: {tekst}')\n",
|
||||||
|
"wzorzec = re.compile(r'A+')\n",
|
||||||
|
"print(f'Dopasowanie zachłanne: {wzorzec.findall(tekst)}')\n",
|
||||||
|
"wzorzec = re.compile(r'A+?')\n",
|
||||||
|
"print(f'Dopasowanie leniwe: {wzorzec.findall(tekst)}')"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "ea861a33e942d42a"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"print(f'Łańcuch: {tekst}')\n",
|
||||||
|
"\n",
|
||||||
|
"# dokladnie 3 dopasowania\n",
|
||||||
|
"wzorzec = re.compile(r'A{3}')\n",
|
||||||
|
"print(f'{wzorzec.findall(tekst)}')\n",
|
||||||
|
"\n",
|
||||||
|
"# pomiedzy 2 i 3 dopasowania\n",
|
||||||
|
"wzorzec = re.compile(r'A{2,3}')\n",
|
||||||
|
"print(f'{wzorzec.findall(tekst)}')\n",
|
||||||
|
"\n",
|
||||||
|
"# 2 lub wiecej dopasowan\n",
|
||||||
|
"wzorzec = re.compile(r'A{2,}')\n",
|
||||||
|
"print(f'{wzorzec.findall(tekst)}')\n",
|
||||||
|
"\n",
|
||||||
|
"# 3 lub mniej dopasowan\n",
|
||||||
|
"wzorzec = re.compile(r'A{,3}')\n",
|
||||||
|
"print(f'{wzorzec.findall(tekst)}')"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "751272b81731af36"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"# poczatek lub koniec lancucha\n",
|
||||||
|
"\n",
|
||||||
|
"tekst = \"Ale pięknie pachnie! Maciek, co gotujesz?\"\n",
|
||||||
|
"\n",
|
||||||
|
"# poczatek lancucha\n",
|
||||||
|
"wzorzec = re.compile(r'^Ale')\n",
|
||||||
|
"print(f'{wzorzec.findall(tekst)}')\n",
|
||||||
|
"\n",
|
||||||
|
"# poczatek lancucha\n",
|
||||||
|
"wzorzec = re.compile(r'^ale')\n",
|
||||||
|
"print(f'{wzorzec.findall(tekst)}')\n",
|
||||||
|
"\n",
|
||||||
|
"# koniec lancucha\n",
|
||||||
|
"wzorzec = re.compile(r'Ale$')\n",
|
||||||
|
"print(f'{wzorzec.findall(tekst)}')\n",
|
||||||
|
"\n",
|
||||||
|
"# koniec lancucha + znak ucieczki\n",
|
||||||
|
"wzorzec = re.compile(r'gotujesz\\?$')\n",
|
||||||
|
"print(f'{wzorzec.findall(tekst)}')"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "97bcd3ff7cc3913"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"# grupy znakow\n",
|
||||||
|
"wzorzec = re.compile(r'[A-Z]')\n",
|
||||||
|
"print(f'Duże litery: {wzorzec.findall(tekst)}')\n",
|
||||||
|
"\n",
|
||||||
|
"wzorzec = re.compile(r'[a-z]')\n",
|
||||||
|
"print(f'Małe litery: {wzorzec.findall(tekst)}')\n",
|
||||||
|
"\n",
|
||||||
|
"wzorzec = re.compile(r'[A-z]')\n",
|
||||||
|
"print(f'Małe i duże litery: {wzorzec.findall(tekst)}')\n",
|
||||||
|
"\n",
|
||||||
|
"wzorzec = re.compile(r'[aeiou]')\n",
|
||||||
|
"print(f'Samogłoski: {wzorzec.findall(tekst)}')"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "ee099e6e1e5e2f80"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"# wzorzec(?=X) - dopasowanie, jeśli po nim występuje X\n",
|
||||||
|
"\n",
|
||||||
|
"tekst = \"ACABADAHSAIIIQIIINSAODIANSAAGAGAGGGGPAAG\"\n",
|
||||||
|
"\n",
|
||||||
|
"print(f'Łańcuch: {tekst}')\n",
|
||||||
|
"wzorzec = re.compile(r'G+(?=A)')\n",
|
||||||
|
"print(f'{wzorzec.findall(tekst)}')"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "dd6351952639ef42"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"tekst = \"Ale się zrobiła świąteczna atmosfera.\"\n",
|
||||||
|
"wzorzec = re.compile(r'Ale|świąteczna|zrobiła')\n",
|
||||||
|
"print(f'{wzorzec.findall(tekst)}')"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "c7f3e1b9d16c91db"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"source": [
|
||||||
|
"## Znaki specjalne\n",
|
||||||
|
"\n",
|
||||||
|
"\\s\t- biały znak\n",
|
||||||
|
"\n",
|
||||||
|
"\\S\t- nie-biały znak\n",
|
||||||
|
"\n",
|
||||||
|
"\\d\t- cyfra\n",
|
||||||
|
"\n",
|
||||||
|
"\\D\t- nie-cyfra\n",
|
||||||
|
"\n",
|
||||||
|
"\\w\t- znaki alfanumeryczne (litery i cyfry) oraz\n",
|
||||||
|
" \n",
|
||||||
|
"\\W\t- znaki nie-alfanumeryczne i nie\n",
|
||||||
|
" \n",
|
||||||
|
"\\b\t- początek lub koniec ,,słowa’’\n",
|
||||||
|
" \n",
|
||||||
|
"\\B\t- nie początek lub koniec ,,słowa''\n",
|
||||||
|
"\n",
|
||||||
|
"[a-z]\t- małe litery\n",
|
||||||
|
"\n",
|
||||||
|
"[A-Z]\t- wielkie litery\n",
|
||||||
|
"\n",
|
||||||
|
"[0-9]\t- cyfry\n"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "c1a7435b7887f5c2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"wzorzec = re.compile(r'\\w+')\n",
|
||||||
|
"print(f'Wyrazy: {wzorzec.findall(tekst)}')\n"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "3b1b1f147233455d"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"source": [
|
||||||
|
"## Część II: Zadania praktyczne\n",
|
||||||
|
"\n",
|
||||||
|
"### Zadanie 1: Wyszukiwanie numerów telefonu\n",
|
||||||
|
"\n",
|
||||||
|
"Napisz wyrażenie regularne, które znajdzie wszystkie numery telefonu w tekście. Zakładamy, że numer telefonu ma format `xxx-xxx-xxx` lub `xxx xxx xxx`.\n"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "e0670d19927add2b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"tekst = \"\"\"\n",
|
||||||
|
"Jan: 123-456-789\n",
|
||||||
|
"Anna: 987 654 321\n",
|
||||||
|
"Karol: 456-789-123\n",
|
||||||
|
"Zbyszek: 53252525342252\n",
|
||||||
|
"Tytus: aaaa666432\n",
|
||||||
|
"\"\"\"\n",
|
||||||
|
"\n",
|
||||||
|
"wzorzec = re.compile(r\"\")\n",
|
||||||
|
"print(f'Numery: {wzorzec.findall(tekst)}')"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "aecbbf61477429ac"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"tekst = \"\"\"\n",
|
||||||
|
"jan.kowalski@gmail.com\n",
|
||||||
|
"anna.zielinska@amu.edu.pl\n",
|
||||||
|
"karol.nowak@interia.pl\n",
|
||||||
|
"hello world\n",
|
||||||
|
"@test.pl\n",
|
||||||
|
"x@x\n",
|
||||||
|
"fff22@gmail.com\n",
|
||||||
|
"\"\"\"\n",
|
||||||
|
"\n",
|
||||||
|
"wzorzec = re.compile(r\"\")\n",
|
||||||
|
"print(f'Adresy: {wzorzec.findall(tekst)}')"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": false
|
||||||
|
},
|
||||||
|
"id": "1dcf9585d7b78073"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "Python 3",
|
||||||
|
"language": "python",
|
||||||
|
"name": "python3"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"codemirror_mode": {
|
||||||
|
"name": "ipython",
|
||||||
|
"version": 2
|
||||||
|
},
|
||||||
|
"file_extension": ".py",
|
||||||
|
"mimetype": "text/x-python",
|
||||||
|
"name": "python",
|
||||||
|
"nbconvert_exporter": "python",
|
||||||
|
"pygments_lexer": "ipython2",
|
||||||
|
"version": "2.7.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 5
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user