Skip to content

Commit 131fa0e

Browse files
committed
week2 materjalid
1 parent 479f9fe commit 131fa0e

16 files changed

Lines changed: 888 additions & 0 deletions

build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,6 @@ repositories {
1818
dependencies {
1919
// initial
2020
testImplementation 'junit:junit:4.13.2'
21+
// week2
22+
testImplementation 'dk.brics:automaton:1.12-4'
2123
}

inputs/regex.txt

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
Mull-mull-mull-mull, väiksed kalad
2+
This color is green.
3+
Jõe kaldal rohu sees magab kassist kalamees
4+
This colour is red.
5+
kus on teie väiksed jalad?
6+
This colouuur is bleu.
7+
abab
8+
aaaa
9+
ababab
10+
ababb -- ei tahtnud seda!
11+
seda ka ei taha: kabab
12+
abba
13+
baba
14+
baab
15+
Aastavahetuse magusad palad
16+
0100010
17+
011110110
18+
100
19+
20+
1
21+
101
22+
See sisaldab lisaks 1 ja 0-le ka mõttetut teksti.
23+
jaa
24+
jaaa
25+
jaaaaaaaaaa
26+
jahaaaaaaaaaaaaa!
27+
jaha
28+
haha
29+
jaahaa
30+
jh, jah, jha on pigem eestikeelsed sõnad.
31+
This is (not) important (for me).
32+
Johannes Aavik
33+
Hendrik Adamson
34+
Artur Adson
35+
Vahur Afanasjev
36+
Ave Alavainu
37+
August Alle
38+
Artur Alliksaar
39+
Betti Alver
40+
Ott Arder
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package week2;
2+
3+
import java.util.Map;
4+
5+
public class TextAnalyzer {
6+
7+
// Sõned, mis lõppevad tähtedega "ed" või mõni täht veel.
8+
// (Ülesanne lehel on pikemalt seletatud!)
9+
public static final String RE1 = null;
10+
11+
// Paaritu pikkusega sõned.
12+
public static final String RE2 = null;
13+
14+
// Sõned, mille esimene ja viimane täht on sama!
15+
public static final String RE3 = null;
16+
17+
// Sõned, mis ülesanne nimede tingimustele vastavad.
18+
public static final String NAME = null;
19+
20+
// Sõned, mis ülesanne numbri tingimustele vastavad.
21+
public static final String NUMBER = null;
22+
23+
public TextAnalyzer(String text) {
24+
// Kas siin peaks ka midagi tegema?
25+
}
26+
27+
public Map<String, String> getPhoneNumbers() {
28+
throw new UnsupportedOperationException();
29+
}
30+
31+
public String anonymize() {
32+
throw new UnsupportedOperationException();
33+
}
34+
35+
36+
static void main() {
37+
38+
String input =
39+
"""
40+
Mina olen Kalle Kulbok ja mu telefoninumber on 5556 4272.
41+
Mina olen Peeter Peet ja mu telefoninumber on 5234 567.
42+
Mari Maasikas siin, mu number on 6723 3434. Tere, olen Jaan Jubin numbriga 45631643.""";
43+
44+
TextAnalyzer ta = new TextAnalyzer(input);
45+
Map<String, String> phoneBook = ta.getPhoneNumbers();
46+
System.out.println(phoneBook.get("Peeter Peet")); // peab väljastama 5234567
47+
System.out.println(phoneBook.get("Jaan Jubin")); // peab väljastama 45631643
48+
49+
System.out.println(ta.anonymize());
50+
51+
/* peab väljastama:
52+
Mina olen <nimi> ja mu telefoninumber on <telefoninumber>.
53+
Mina olen <nimi> ja mu telefoninumber on <telefoninumber>.
54+
<nimi> siin, mu number on <telefoninumber>. Tere, olen <nimi> numbriga <telefoninumber>.
55+
*/
56+
}
57+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package week2.challenge;
2+
3+
public class RegexChallenge {
4+
5+
// NB! Epsiloni asemel tuleb kasutada tühjad sulud: ()
6+
// Aga küsimärgi ja tärni/plussi kasutades ei ole isegi epsilonit siin vaja.
7+
8+
9+
// Õpiku ülesanne: täisarvuliteraalid, mille väärtus ei ole 42.
10+
public static final String L1 = null;
11+
12+
// Täisarvliteraalid, mille väärtus on rangelt suurem kui 42.
13+
public static final String L2 = null;
14+
15+
// Tähestiku {0,1} sõnad, milles esinevad täpselt üks '1' ja vähemalt üks '0'.
16+
public static final String RE1 = null;
17+
18+
// Tähestiku {a,b} sõnad, mis sisaldavad paarisarv a-sid ja paarisarv b-sid.
19+
public static final String RE2 = null;
20+
21+
// Tähestiku {0,1} Sõnad, mis ei sisalda 101.
22+
public static final String RE3 = null;
23+
24+
// Kolmega jaguvad binaararvud.
25+
public static final String RE4 = null;
26+
27+
}
28+
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package week2.intro;
2+
3+
import java.io.IOException;
4+
import java.nio.file.Files;
5+
import java.nio.file.Paths;
6+
import java.util.List;
7+
8+
public class RegexExercise {
9+
10+
// sõnad "kalad" või "jalad".
11+
public static final String RE1 = null;
12+
13+
// Viietähelised sõned, mis lõppevad tähtedega "alad".
14+
public static final String RE2 = null;
15+
16+
// color ja colour
17+
public static final String RE3 = null;
18+
19+
// jaha, jahaaaaaaaaa!
20+
public static final String RE4 = null;
21+
22+
// binaarsõned
23+
public static final String RE5 = null;
24+
25+
// eelviimane täht on "a"
26+
public static final String RE6 = null;
27+
28+
// tagasiviited
29+
public static final String RE7 = null;
30+
31+
// nimede asendamine: regulaaravaldis
32+
public static final String RE8 = null;
33+
// millega asendada? (Util.replace'i teine argument)
34+
public static final String RP8 = null;
35+
36+
// Eemaldada sulud!
37+
public static final String RE9 = null;
38+
// Siin asendatakse regexiga sobituvad juppid tühja sõnega.
39+
40+
41+
42+
// Testimise meetod, et saaks natuke debuugida, muidu on ka automaattestid.
43+
44+
static void main() throws IOException {
45+
List<String> strings = Files.readAllLines(Paths.get("inputs", "regex.txt"));
46+
printLines(RegexUtils.grep(RE1, strings));
47+
}
48+
49+
private static void printLines(List<String> strings) {
50+
for (String s : strings) System.out.println(s);
51+
}
52+
53+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package week2.intro;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
import java.util.regex.Matcher;
6+
import java.util.regex.Pattern;
7+
8+
public class RegexUtils {
9+
10+
public static List<String> grep(String regex, List<String> strings) {
11+
Pattern pattern = Pattern.compile(regex);
12+
ArrayList<String> result = new ArrayList<>();
13+
for (String s : strings) if (pattern.matcher(s).find()) result.add(s);
14+
return result;
15+
}
16+
17+
public static List<String> replace(String regex, String repl, List<String> strings) {
18+
Pattern pattern = Pattern.compile(regex);
19+
ArrayList<String> result = new ArrayList<>();
20+
for (String s : strings) {
21+
Matcher matcher = pattern.matcher(s);
22+
if (matcher.find()) result.add(matcher.replaceAll(repl));
23+
}
24+
return result;
25+
26+
}
27+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package week2.regexapi;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
import java.util.regex.Matcher;
6+
import java.util.regex.Pattern;
7+
8+
public class Demo {
9+
10+
static void main() {
11+
String input =
12+
"""
13+
1, 2, Polizei, 3, 4, Grenadier...
14+
Jenny, don't change your number, 867 5309.
15+
666 the number of the Beast. Hell and fire was spawned to be released.
16+
87, 87 var har du tagit vägen nu?
17+
Olen su poole teel. Aa-ha-ha-haaaaaaa-haa-haaaaaa. 581C.""";
18+
19+
Pattern pattern = Pattern.compile("\\d+");
20+
Matcher matcher = pattern.matcher(input);
21+
22+
List<Integer> numbers = new ArrayList<>();
23+
24+
while (matcher.find()) {
25+
String match = matcher.group();
26+
numbers.add(Integer.parseInt(match));
27+
}
28+
29+
System.out.print("Tekstis esinevad arvud: ");
30+
System.out.println(numbers);
31+
32+
pattern = Pattern.compile("(\\d+) (\\d+)");
33+
matcher = pattern.matcher(input);
34+
if (matcher.find()) {
35+
System.out.println("Jenny number: " + matcher.group(0)); // = matcher.group()
36+
System.out.println("Esimene osa: " + matcher.group(1));
37+
System.out.println("Teine osa: " + matcher.group(2));
38+
}
39+
}
40+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package week2.regexapi;
2+
3+
import java.util.List;
4+
5+
public class Exercise1 {
6+
7+
public static List<String> extractAddresses(String text) {
8+
throw new UnsupportedOperationException();
9+
}
10+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package week2.regexapi;
2+
3+
import java.util.List;
4+
5+
public class Exercise2 {
6+
7+
public static List<String> extractFunctions(String text){
8+
throw new UnsupportedOperationException();
9+
}
10+
}

0 commit comments

Comments
 (0)