Substring delete with optional word boundaries
With Whole word off (default), every line is tested with `line.includes(pattern)` and dropped if the pattern is anywhere in the line. With Whole word on, the pattern is regex-escaped and wrapped in `\b` boundaries, so `apple` only matches `apple` surrounded by word-breaks (start, end, whitespace, punctuation).
Case sensitive (off by default) flips whether the compare is case-aware. In Whole word mode this toggles the `i` regex flag; in substring mode it toggles a `toLowerCase` on both sides.
No regex mode - the pattern is literal text, not a regex. If you need regex-based removal, use Filter list lines in Regex mode with Invert on.
How to use delete list items
- 1Paste your list into the input panel
- 2Type the substring to match in Delete matching
- 3Toggle Whole word to require word-boundary matches (e.g. `apple` but not `apple pie`)
- 4Toggle Case sensitive to require exact-case matching
- 5Output: every non-matching line, in original order
Keyboard shortcuts
Drive ListShift without touching the mouse.
What this tool actually does
Substring filter with optional word-boundary + case toggles.
Substring match by default
Any line that contains the pattern as a substring is dropped. `apple` drops both `apple` and `apple pie`. Fast, predictable, no regex surprises.
Whole word wraps in `\b` boundaries
Toggle on to delete only lines where the pattern appears as a standalone word. The pattern is regex-escaped (so `.`, `*` match literally), then wrapped in `\b…\b`. `apple` drops `apple` but keeps `apple pie` in this mode.
Case sensitivity toggle
Off by default. `apple` matches `Apple`, `APPLE`, `apple`. Turn on to require exact case.
Not a regex tool
The pattern is literal text. Metacharacters (`.`, `*`, `+`, `?`) match themselves. For actual regex, use Filter list lines in Regex mode with Invert on - that drops regex-matching lines.
Original order preserved
Kept lines stay in their original positions. No sort, no reorder. Blank lines pass through (they never match a non-empty pattern).
Worked example
Default Whole word off, pattern `apple`. Substring match drops both `apple` and `apple pie`.
apple banana carrot apple pie apricot
banana carrot apricot
Settings reference
How each option shapes the output using the sample above (pattern `apple`).
| Setting | What it does | Effect on the sample |
|---|---|---|
| Whole word: off (default), pattern: `apple` | Substring match - anywhere in the line | Drops `apple` AND `apple pie` |
| Whole word: on, pattern: `apple` | `\b`-bounded match - standalone word only | Drops only `apple`; keeps `apple pie` (and `apricot`) |
| Case sensitive: on, pattern: `apple` | Exact-case match | No change (sample is all lowercase); `Apple` in the input would stay |
| Empty pattern | No deletions - input returned unchanged | Status bar: "No pattern - nothing deleted" |
| Blank lines (automatic) | Pass through - blank never matches a non-empty pattern | A trailing blank line stays |