2025-07-01 20:57:56 +02:00

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"]
```