The Performance report in Google Search Console holds the only first-party keyword data you will ever get from Google. The problem is that the default view buries it: a flat list of a thousand rows, sorted by clicks, with no grouping and no intent signal. Regex filtering is the fix. With one expression you can split branded from non-branded traffic, isolate every question your audience types, or pull out only the long-tail queries that sit on page two and are begging for an internal link.
This guide is a filter-by-filter breakdown. For each of the 12 expressions below you get the exact string to copy, a plain-English explanation of what it returns, and the SEO decision it supports. No theory dumps, no regex history lesson.
Where to find the regex filter in Google Search Console
- Open Google Search Console and select your property.
- In the left menu, click Performance, then Search results.
- Click the + New button at the top of the report (next to the date filter).
- Choose Query or Page.
- In the dropdown, switch from Queries containing to Custom (regex).
- Pick Matches regex or Doesn’t match regex, paste your expression, then hit Apply.
Two things worth knowing before you start:
- Regex only works on the Query and Page dimensions. Country, device, search appearance and date still use standard dropdowns.
- You get a case sensitivity dropdown next to the match type. Leave it on case insensitive unless you are deliberately hunting for capitalised brand mentions. As a fallback you can prefix any expression with
(?i).

Search Console uses RE2, not the regex you know from PHP or JavaScript
Google’s regex engine is RE2. It is fast and it never backtracks, which is great for performance but means a few classic constructs simply do not exist. If you paste them, the filter box turns red and nothing applies.
| Syntax | Meaning | Supported in GSC? |
|---|---|---|
| |
OR (this or that) | Yes |
^ / $ |
Start / end of the string | Yes |
. |
Any single character | Yes |
* + ? |
0 or more, 1 or more, 0 or 1 | Yes |
{2,4} |
Between 2 and 4 repetitions | Yes |
\\b |
Word boundary | Yes |
\\s \\d \\w |
Space, digit, word character | Yes |
(?i) |
Ignore case | Yes |
(?=...) (?!...) |
Lookahead / negative lookahead | No |
(?<=...) |
Lookbehind | No |
\\1 |
Backreference | No |
This is the single biggest reason regex filters fail in Search Console. Every tutorial that tells you to exclude your brand with a negative lookahead is wrong for GSC. You do not need one: switch the match type to Doesn’t match regex and the exclusion is handled natively.

The 12 filters, one by one
Replace the example brand and domain with your own before applying. Every expression below is written for the case-insensitive setting.
1. Question queries (the informational goldmine)
Dimension: Query | Match type: Matches regex
^(who|what|why|when|where|which|whose|how|can|could|should|would|will|do|does|did|is|are|was|were|has|have|am)\b
What it returns: every impression from a query that starts with a question word or an auxiliary verb. Anchoring with ^ matters. Without it, “seo services in london” would match on the word “in” hiding inside another word, and “how” appearing mid-phrase would inflate your list with navigational junk.
The decision it supports: this is your FAQ and H2 roadmap. Sort by impressions, filter to position 8 to 20, and you have a list of questions Google already associates with your site but does not rank you well for. Each one becomes a subheading in an existing article rather than a new thin page. It is also the fastest way to find featured snippet and AI Overview candidates, since question queries are disproportionately likely to trigger them.
2. Branded queries
Dimension: Query | Match type: Matches regex
wicked ?seo|wickedseo|wiked ?seo|wicked ?s\.?e\.?o|wicked-seo
What it returns: all traffic where someone typed your name, including the misspellings, the spaced-out variants and the ones with punctuation. The ? after a space makes that space optional, so a single pattern covers “wickedseo” and “wicked seo” at once.
The decision it supports: branded traffic is a demand metric, not an SEO metric. Track it separately so it stops flattering your organic growth curve. If branded clicks jump after a campaign, that is PR working. If non-branded clicks are flat while branded rises, your content strategy is not the thing that is performing. Also scan the misspellings: if a variant gets real volume, make sure it appears somewhere on your site so Google resolves the query to you.
3. Non-branded queries
Dimension: Query | Match type: Doesn’t match regex
wicked ?seo|wickedseo|wiked ?seo|wicked ?s\.?e\.?o|wicked-seo
What it returns: the same expression as filter 2, inverted. This is your true acquisition data: people who did not know you existed and found you anyway.
The decision it supports: this becomes your headline KPI in every monthly report. Compare the period against the previous one, then export both and diff the query lists to see which non-branded terms appeared or disappeared. A drop in non-branded clicks with stable branded clicks almost always points to a ranking or indexing issue, not a demand issue.
4. Long-tail queries (four words or more)
Dimension: Query | Match type: Matches regex
^(\w+\s){3,}\w+$
What it returns: queries made of at least four words. The {3,} asks for three or more “word plus space” blocks, followed by a final word with no trailing space. Change 3 to 5 for six-word-plus monsters.
The decision it supports: long-tail queries convert better and are cheaper to win. Apply this filter, then switch to the Pages tab to see which URLs absorb most of your long-tail impressions. Those pages are your topical authority anchors and deserve internal links. Any long-tail query sitting at position 5 to 15 with a decent CTR gap is a candidate for a dedicated section or a standalone page.
5. Head terms (one to three words)
Dimension: Query | Match type: Matches regex
^\w+(\s\w+){0,2}$
What it returns: short, high-competition queries only. The mirror image of filter 4.
The decision it supports: head terms tell you how Google perceives your site’s core topic. If your head-term impressions are all in an unrelated category, your internal linking and site structure are sending mixed signals. Also useful for spotting queries where you rank at position 11 to 20 with tens of thousands of impressions: those are the pages worth a serious content refresh and a link-building push, because a two-position gain there is worth more than a first-place ranking on fifty long-tails.
6. Comparison and alternative queries
Dimension: Query | Match type: Matches regex
\b(vs|versus|compare|comparison|alternative|alternatives|difference between|better than|instead of|competitor|competitors)\b
What it returns: mid-funnel research queries where the user has narrowed the field and is choosing between options.
The decision it supports: comparison pages. If you get impressions on “[your brand] vs [competitor]” and you have no page for it, someone else is writing that page and framing the comparison. Build it. If the queries compare two products you both sell or review, build a comparison table page. These convert far above the site average and are usually the fastest revenue win hiding in the Performance report.
7. Commercial and transactional intent
Dimension: Query | Match type: Matches regex
\b(buy|price|prices|pricing|cost|costs|quote|cheap|cheapest|affordable|discount|deal|deals|coupon|promo|for sale|hire|agency|freelance|consultant|service|services|package|packages)\b
What it returns: queries carrying a money signal. Someone typing “seo audit cost” is much closer to a purchase than someone typing “what is an seo audit”. SEOs Guide to Using RegEx in Search Console covers this in more depth.
The decision it supports: two things. First, check that these queries land on service or product pages, not blog posts. If a pricing query lands on a blog article, you have a mapping problem: add a clear CTA to that article or build a proper commercial page. Second, look at the CTR. Transactional queries with low CTR usually mean your title tag reads like an essay instead of an offer.
8. Local intent
Dimension: Query | Match type: Matches regex
\b(near me|nearby|near by|closest|local|in my area|london|manchester|paris|brussels|montreal)\b
What it returns: geo-modified searches. Extend the city list with the towns you actually serve.
The decision it supports: local landing pages and Business Profile work. If you see impressions for cities you do not have a page for, and the impressions come with poor positions, that is unserved demand. If “near me” queries generate impressions but almost no clicks, the map pack is eating the result and the fix lives in your Business Profile, reviews and NAP consistency rather than in your on-page content.
9. Year-stamped queries (the freshness audit)
Dimension: Query | Match type: Matches regex
\b20(2[0-9]|3[0-9])\b
What it returns: every query containing a year. Narrow it with \b(2024|2025)\b to find people landing on your outdated content, or \b(2026|2027)\b to see demand for current and upcoming versions.
The decision it supports: a refresh queue, ranked by impressions. Any page still pulling traffic on a 2024 or 2025 query needs its title, dates and screenshots updated to 2026. And since we are in late August, this is also the moment to check whether 2027 queries are already appearing for your seasonal or “best tools” content. They usually start showing up in Q4, and publishing before the wave arrives is how you own the ranking for the whole following year.
10. Content format modifiers
Dimension: Query | Match type: Matches regex
\b(template|templates|checklist|example|examples|guide|tutorial|course|tool|tools|calculator|generator|free|pdf|list|best|top)\b
What it returns: queries where the user is asking for a specific format, not just information.
The decision it supports: format mismatch is one of the most common reasons a well-written article underperforms. If people search “seo audit checklist” and you serve a 3,000-word essay, the intent is unmet. Add a downloadable checklist, a table, a calculator or a template block to the existing URL. This filter is also a shortcut for finding lead magnet ideas that already have proven demand pointed at your domain.
11. Page group filter (folders, hubs, clusters)
Dimension: Page | Match type: Matches regex
^https://wicked-seo\.com/(blog|guides)/
Or, for a specific topic cluster:
/blog/(technical-seo|site-speed|crawl-budget|log-file)
What it returns: performance data for a whole section or cluster instead of one URL at a time. Note the escaped dot in seo\.com: an unescaped . means “any character”, which usually still works but can produce false matches on similar domains.
The decision it supports: section-level reporting. Compare /blog/ against /services/ over the last 6 months and you know whether your content engine or your commercial pages are driving growth. At cluster level, this is how you prove that a topical hub is maturing: rising impressions across the whole cluster, not just on the pillar page. It is also the cleanest way to measure the impact of a content refresh batch.
12. Strip out URL noise
Dimension: Page | Match type: Doesn’t match regex
[?&](utm_|page=|sort=|filter=|s=|replytocom)|/page/\d+|/feed/?$|/amp/?$
What it returns: your Page report minus parameter URLs, paginated archives, feeds and AMP duplicates. Everything left is a real, canonical content URL.
The decision it supports: accurate page inventory. Before you decide which pages to prune, consolidate or refresh, you need a list that is not polluted by 400 versions of the same category page. Flip the filter to Matches regex instead and you get the opposite view: if those noisy URLs are collecting impressions and clicks, you have a canonicalisation or crawl-budget problem worth a technical ticket.
Quick reference table
| # | Filter | Dimension | Match type | Output used for |
|---|---|---|---|---|
| 1 | Question queries | Query | Matches | FAQ blocks, snippet capture |
| 2 | Branded | Query | Matches | Brand demand tracking |
| 3 | Non-branded | Query | Doesn’t match | True organic acquisition KPI |
| 4 | Long-tail (4+ words) | Query | Matches | New sections, internal links |
| 5 | Head terms (1-3 words) | Query | Matches | Topical positioning check |
| 6 | Comparisons / alternatives | Query | Matches | Versus pages, bottom funnel |
| 7 | Commercial intent | Query | Matches | Query to landing page mapping |
| 8 | Local intent | Query | Matches | Location pages, Business Profile |
| 9 | Year-stamped | Query | Matches | Content refresh queue |
| 10 | Format modifiers | Query | Matches | Format fixes, lead magnets |
| 11 | Folder / cluster | Page | Matches | Section-level reporting |
| 12 | URL noise removal | Page | Doesn’t match | Clean page inventory, tech audit |

Stack your filters for the real insights
A single regex is useful. Combining one query filter with one page filter and the position metric is where the report starts making decisions for you. Search Console allows one regex filter per dimension, so you can run a Query regex and a Page regex simultaneously.
Three combinations worth saving as bookmarks:
- Question queries + blog folder + Average position enabled. Sort ascending by position and read rows 8 to 20. Every one is a subheading you should add this month.
- Non-branded + last 3 months vs previous 3 months comparison. Export both, drop them into a spreadsheet and diff the query columns to isolate exactly which terms you lost.
- Commercial intent + Doesn’t match your services folder. This surfaces buying-intent queries landing on the wrong template, which is usually the single most profitable list in the whole account.
One practical limit: the Performance report interface caps exports at 1,000 rows. If a filter returns more than that, either tighten the expression, shorten the date range, or pull the data through the Search Console API or a Looker Studio connector where the same regex syntax applies.

Five mistakes that make a regex filter return nothing
- Using lookaheads.
(?!brand)is invalid in RE2. Use the “Doesn’t match regex” option instead. - Forgetting to escape special characters. A question mark, a dot, a plus sign or a bracket inside a literal string needs a backslash:
\?,\.,\+. - Over-anchoring.
^seo audit$matches only that exact query. Drop the anchors unless exact matching is the point. - Case sensitivity left on. If your expression is lowercase and the dropdown is set to case sensitive, capitalised queries vanish from the report.
- Trailing spaces. Pasting an expression with a space at the end from a document or a spreadsheet breaks the match silently. Retype the last character if a filter behaves oddly.
FAQ
Does Google Search Console support full regex?
No. It supports the RE2 syntax, which covers alternation, anchors, quantifiers, character classes, groups and word boundaries, but excludes lookaheads, lookbehinds and backreferences. Anything you can express without those constructs will work.
What does ?= mean in regex, and can I use it in Search Console?
(?=...) is a positive lookahead: it checks that a pattern follows without including it in the match, and (?!...) is its negative counterpart. Neither works in Google Search Console because RE2 does not implement lookarounds. The workaround is the “Doesn’t match regex” match type for exclusions, or splitting the logic across two filters.
Is regex in Search Console case sensitive?
You choose. A case sensitivity dropdown sits next to the match type selector. Case insensitive is the safe default for keyword analysis. You can also force it inside the expression with the (?i) prefix.
Can I use regular expressions in Google Search itself?
No. Google’s public search box does not accept regular expressions, only search operators such as site:, intitle: and quotation marks. Regex is available in Search Console, Google Analytics 4, Looker Studio and BigQuery, not in the SERP.
Can I apply regex to pages as well as queries?
Yes. Both the Query and Page dimensions accept a custom regex filter, and you can run one of each at the same time to cross-reference intent against a specific section of the site.
Is Google Search Console still worth using in 2026?
It remains the only source of first-party impression, click, CTR and position data straight from Google, and it is free. With AI Overviews absorbing more clicks, the impressions-versus-clicks gap that Search Console exposes has become one of the most important diagnostics an SEO has. Regex filtering is what turns that raw feed into a prioritised action list.
Why does my regex work in an online tester but not in Search Console?
Most online testers default to a PCRE engine, which is more permissive than RE2. Test with a tester set to RE2 or Go syntax, or simply paste into the Search Console filter box: it validates the expression instantly and turns red when the syntax is not supported.
Start with three filters, not twelve
If you only implement three of these, make them non-branded queries, question queries and the folder filter. Those three cover reporting credibility, content ideation and section-level measurement, which is roughly 80% of what regex in Google Search Console is good for. Add the rest as your analysis matures, and keep the working expressions in a shared doc so the whole team runs the same segments the same way every month. It is argued more carefully on seotesting.com.