Merge pull request 'Distinguish qBittorrent and Cleanuparr pattern syntax in README' (#7) from docs/pattern-syntax-consumers into main

Reviewed-on: #7
This commit was merged in pull request #7.
This commit is contained in:
2026-04-10 16:38:51 +02:00
+32 -13
View File
@@ -125,25 +125,44 @@ rules and worked examples.
## Pattern syntax ## Pattern syntax
Each line in `blacklist` and `whitelist` is a pattern in one of the The patterns in `blacklist` and `whitelist` are consumed by two different
following forms (the same forms that qBittorrent's excluded file names tools with different capabilities. Use only the common subset (wildcards)
accepts, since that is where blacklist patterns end up via Cleanuparr's to ensure patterns work everywhere.
Blocklist Sync):
| Form | Example | Matches | ### qBittorrent (via Blocklist Sync)
qBittorrent's excluded file names field uses Qt glob wildcards:
| Pattern | Example | Matches |
|---|---|---| |---|---|---|
| `*example` | `*.srt` | File name ends with `example` | | `*` | `*.srt` | Zero or more characters |
| `example*` | `sample*` | File name starts with `example` | | `?` | `*.r??` | Exactly one character |
| `*example*` | `*sample*` | File name contains `example` | | `[abc]` | `*.[rs]00` | One character from the set |
| `example` | `RARBG.txt` | File name is exactly `example` | | `[a-z]` | `*.[r-z]??` | One character in the range |
| `regex:<regex>` | `regex:.*\.srt$` | File name matches the regex | | `[!abc]` | `*.[!m]??` | One character NOT in the set |
| Literal | `VOSTFR` | Exact match |
Regex, backslashes, and anchors (`^`, `$`, `\d`, `(?i)`) are **not
supported** by qBittorrent and will be silently ignored.
### Cleanuparr Malware Blocker (Sonarr/Radarr queue)
Cleanuparr's Malware Blocker supports all the wildcard forms above plus
regex with the `regex:` prefix:
```
regex:.*\.srt$
```
Regex patterns only work in Cleanuparr's Malware Blocker. They do not
work when pushed to qBittorrent via Blocklist Sync.
### Merge script
The merge script subtracts the whitelist from the blacklist as **exact The merge script subtracts the whitelist from the blacklist as **exact
strings**, not by pattern semantics. To remove a pattern from the strings**, not by pattern semantics. To remove a pattern from the
blacklist, the whitelist line must be byte-for-byte identical to the blacklist, the whitelist line must be byte-for-byte identical to the
blacklist line. `*.srt` in the whitelist strips `*.srt` from the blacklist line. See
blacklist; it does **not** strip `regex:.*\.srt$` even though both
patterns describe the same files. See
[Lists](https://git.hisp.no/arr/blocklists/wiki/Lists) for the full rules. [Lists](https://git.hisp.no/arr/blocklists/wiki/Lists) for the full rules.
## Sync schedule ## Sync schedule