28 lines
1.7 KiB
Markdown
28 lines
1.7 KiB
Markdown
## Reguläre Ausdrücke (Regex)
|
|
Sonderzeichen (`*+?{}[]\|()`) mit `\` escapen.
|
|
* **Platzhalter:** `.` (Zeichen), `\d` (Ziffer), `\w` (Buchstabe/Ziffer), `\s` (Whitespace). Großbuchstaben (`\D`, `\W`, `\S`) negieren die Auswahl.
|
|
* **Auswahl:** `[...]` (Zeichenmenge), `[^...]` (negierte Menge), `[a-z]` (Bereich).
|
|
* **Wiederholung:** `*` (0+), `+` (1+), `?` (0-1), `{n,m}` (Anzahl). `*?` für non-greedy.
|
|
* **Logik & Gruppen:** `()` (Gruppe), `(?P<n>...)` (benannte Gruppe), `|` (ODER).
|
|
* **Position:** `^` (Anfang), `$` (Ende), `\b` (Wortgrenze).
|
|
**Beispiel**:
|
|
```python
|
|
^(?P<timestamp>\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2})\s\[(?P<level>INFO|WARN|ERROR)\]\s\(user:\s'(?P<user>[\w\.-]+@[\w\.-]+)'\)\s"(?P<message>.*?)"$
|
|
````
|
|
## XPath & JSONPath
|
|
* **XPath (XML):** Navigation mit `/` (Kind), `//` (Nachfahre), `.` (aktuell), `..` (Eltern). Filtern mit `[...]`, z.B. `[@id='x']` (Attribut) oder `[1]` (Position). Werte mit `@attribut` oder `text()`.
|
|
* **JSONPath (JSON):** Start mit `$`. Navigation mit `.` oder `['key']`. `..` (rekursiv), `[*]` (alle Array-Elemente). Filtern mit `[?(@...)]`, wobei `@` das aktuelle Element ist.
|
|
**Beispiel**:
|
|
```python
|
|
//course[@id='cds104']/lecturer[@type='external' and units > 5]/name/text()
|
|
```
|
|
```json
|
|
$.movies[?(@.year > 1999 && @.title =~ /^Matrix.*/)].actors[*].name
|
|
```
|
|
## HTTP-APIs & Web Crawling
|
|
* **HTTP-APIs:** Datenaustausch über URLs via REST (Methoden: GET, POST, etc.), oft mit API-Key zur Authentifizierung.
|
|
* **Web Scraping/Crawling:** Extrahiert Daten aus HTML. Auswahl mit CSS-Selektoren (z.B. `tag`, `.klasse`, `#id`). Crawler folgen Links (`<a>`). Beachte `robots.txt` und nutze `sitemap.xml`.
|
|
```css
|
|
main#content article.published:not(.featured) h2 + div.meta a[href*="author"]
|
|
```
|