Skip to content
Technical guide · Published

Search Console regex: the filters that reveal the queries you are not tracking

A copy-paste pattern library. No automata theory, no 400-character monsters nobody can read: just the syntax Search Console actually accepts and the combinations that surface demand you were not measuring.

By Alejandro Verjel · Founder of Rankiamos

TL;DR

  • The filter lives in the performance report, under the Query or Page dimension, in the custom filter dropdown. It offers both "matches" and "doesn't match".
  • Search Console runs RE2, not PCRE. Forget lookahead and backreferences: if your pattern has them, it gets rejected.
  • In Spanish, accents split your results in half. Any serious pattern lists both the accented and the unaccented spelling.
  • Regex segments; the spreadsheet does the numbers. There is no CTR or position filter in the interface.
  • The goal is not a pretty report, it is walking away with a short keyword list that fits your 5 Free units or your 50 Pro units.

Where the regular expression filter lives in the Search Console performance report

Before writing a single pattern you have to find the box. Google tucked Search Console regex inside the ordinary filter menu without any fanfare, which is why plenty of people have used the tool for years without knowing it exists. It is four clicks, always the same four.

1. Open Performance → Search results

This is the classic Search Console performance report, the one with the clicks and impressions chart. Make sure all four metric toggles are on: clicks, impressions, CTR and average position. Without the impressions column visible, half the recipes below are useless.

2. Hit "New" or the filter chip

That is where the Search Console query filters live, alongside page, country, device and search type. On small screens the control collapses into a funnel icon, but it is the same menu.

3. Pick Query and switch the dropdown to custom

The filter defaults to "contains". Open the dropdown and you also get "doesn't contain", "exactly matches" and the regular expression option, with its two variants: matches and doesn't match. That second variant is what makes half the recipes below possible.

4. Paste the pattern and check the date range

A filter does not change the time window. If you have the last 28 days selected you will see very few rows, and on a young site almost none. For this exercise, three months is the floor.

One warning that saves a lot of frustration: the filter runs over the queries Search Console chooses to show you, not over the true total of searches that sent you traffic. Google anonymises the very low-volume tail, so there will always be a gap between the sum of the table rows and the total on the chart. That is not a bug in your pattern, it is how the report works. The time window has its own ceiling too: the report keeps up to 16 months, a limit with real consequences for seasonality analysis that we cover separately in the guide on Search Console's 16 months of historical data.

The other thing worth deciding up front is what you will do with whatever you find. A regex filter with no destination ends up as a screenshot in a document nobody opens. The natural destination is a short list of keywords tracked daily, which is exactly what a rank tracker with Search Console built in is for: Search Console tells you where you appeared according to Google, the tracker tells you what position you hold today, in your city and on your device.

Minimum viable regex syntax in Search Console: RE2 and what it refuses

Google Search Console regular expressions are not the ones in your text editor. Search Console runs on RE2, the engine Google wrote so that no pattern, however twisted, could hang a server. That linear-time guarantee has a cost: RE2 removes every construct that would force the engine to backtrack.

Translated into practice: 95% of what you need behaves identically, and the 5% that fails is always the same 5%. This table is the whole thing you need to memorise.

RE2 syntax supported and unsupported in Search Console
Construct What it does Works?
| Alternation: this or that Yes
( ) Groups alternatives together Yes
[ ] Character class, any one of the characters inside Yes
^ · $ Anchors to the start and end of the query Yes
. · * · + · ? Any character, plus quantifiers Yes
(?i) Inline case-insensitive flag Yes
\d \s \b Digit, whitespace, word boundary (ASCII only) Yes, carefully
(?= (?! (?<= Lookahead and lookbehind No
\1 \2 Backreferences No

Three traps if any of your traffic is in Spanish

The first and most expensive one is accents. Search Console stores the query exactly as the user typed it, and across Latin America most people type from a phone without accents. If your question pattern only lists the accented spelling of "cómo", you lose everyone who typed "como" — which in our data is the overwhelming majority. Every Spanish alternative goes in twice, no exceptions.

The second is that class shorthands such as the digit and word-boundary escapes operate on ASCII. A word boundary wrapped around an accented word behaves oddly, because the accented character is not an ASCII word character. The safe, boring alternative: instead of word boundaries, use explicit spaces and the end-of-string anchor. It always works and it reads better.

The third is the dot. When filtering URLs you will want to escape the dot in the domain, and backslashes survive copy-pasting badly between chat apps, docs and the browser. Trick: put the dot inside square brackets. Shorter to read, identical behaviour, and no backslash to lose along the way.

The limitation that hurts most: because RE2 has no negative lookahead, you cannot write "is a question and does not contain my brand" in a single pattern. That combination has exactly two solutions: apply the second condition through the "doesn't match regex" filter, or export the first result and clean it in a spreadsheet. There is no elegant third option, and any pattern on the internet promising otherwise will fail when you paste it.

That is everything you need. What follows are concrete patterns, each with what it returns and the business question it answers.

Ready-made recipes: splitting brand from non-brand queries

This is the first segmentation anyone should run, for a simple reason: brand queries inflate your metrics and hide reality. If 60% of your clicks come from people who already knew you and typed your name into Google, your site-wide CTR is a comfortable fiction and your average position reflects no competitive battle at all. Splitting brand from non-brand is what turns the report into something actionable.

The pattern has to cover the correct spelling, the frequent typos, the hand-typed domain and the spaced-out variants. People spell brand names badly, and every typo you fail to list leaks into your non-brand bucket.

Recipe 1 · Everything that is brand

(?i)(rankiamos|rankiamo|rankeamos|rankiamos com|rankiamos app)

Filter: Query → matches regex. Swap the alternatives for your brand and its real typos, which you find by sorting the query table by impressions. The domain dot is deliberately left out so the pattern catches both the dotted and the spaced spelling.

Recipe 2 · Everything that is NOT brand

(?i)(rankiamos|rankiamo|rankeamos)

Same pattern, but choosing doesn't match regex. This is your real discovery universe: people who did not know you and saw you anyway. On a young domain it is usually 100% of the report, and that is where all the unfinished work lives.

Recipe 3 · Competitor brand names

(?i)(semrush|ahrefs|accuranker|serpwatcher|seo edge)

Showing up in searches that name a competitor is a strong signal: Google already considers you part of that result set. These queries are usually low frequency and very high commercial intent, and they are almost always underserved because nobody writes content for them.

Recipe 4 · Brand plus a specific doubt

(?i)rankiamos.*(price|pricing|review|reviews|free|cancel|worth it|legit)

The dot-star in the middle acts as a wildcard: anything in between. The pattern returns queries where someone searched your brand next to a specific doubt. It is the best raw material there is for an FAQ page or a reviews section, because it literally tells you what is blocking the purchase.

Watch the order: this pattern requires the brand to come before the doubt. To catch both orders, duplicate the pattern with the two arrangements separated by a pipe — without lookahead there is no compact way to express "both terms in any order".

Ready-made recipes: questions, comparisons and LATAM country variants

This batch segments by intent and by geography. It is where regex stops being a cleanup trick and starts producing content ideas, because each block of results maps to a different page format.

Recipe 5 · Questions in English

(?i)^(what|how|why|when|where|which|who|can i|can you|is it|are there|should i|does)( |$)

The trailing group with a space or end-of-string is what stops "who" from returning "wholesale". It is the safe substitute for a word boundary and it works the same in every language. Everything this returns is material for question-shaped headings with a direct answer underneath, the format that gets quoted most often in Google's AI summaries.

Recipe 6 · Questions in Spanish, accented and not

(?i)^(que|qué|como|cómo|cuando|cuándo|donde|dónde|cual|cuál|cuanto|cuánto|quien|quién|por que|por qué|para que|para qué|se puede|es posible|vale la pena)( |$)

Same structure, doubled for accents. If any share of your traffic comes from Spanish-speaking markets, this is the single highest-return pattern in the whole post, because it surfaces a block of demand that English-only filters never touch.

Recipe 7 · Comparisons and alternatives

(?i)(vs|versus|compare|comparison|alternativ|best |better than|difference between|top 10|top 5)

Note the truncated stem: "alternativ" with no ending covers singular and plural in one alternative. It is the trick that saves the most characters in a long pattern. Queries in this bucket carry high commercial intent and respond badly to a generic article: they want a table, prices and a clear recommendation.

Recipe 8 · Transactional intent

(?i)(price|pricing|cost|how much|cheap|affordable|free trial|buy|subscribe|plan |plans|precio|precios|cuanto cuesta|gratis|contratar)

This is the bucket any business should read first, because every impression lost here has an estimable monetary value. If you have impressions on price queries and no pricing page that ranks, you already know your next task.

Recipe 9 · LATAM geographic variants

(?i)(colombia|bogota|bogotá|medellin|medellín|cali|barranquilla|mexico|méxico|cdmx|guadalajara|monterrey|argentina|buenos aires|chile|santiago|peru|perú|lima|ecuador|quito|guayaquil|spain|españa|madrid|barcelona)

This catches queries where the user spelled the location out. Do not confuse that with implicit local intent: someone searching "dentist" from Medellín also has local intent without typing it, and that demand shows up in the Country filter, not here. Both are useful and they measure different things.

Recipe 10 · Long queries and short queries

^[^ ]+ [^ ]+ [^ ]+ [^ ]+ [^ ]+
^[^ ]+ [^ ]+$

The first returns queries of five words or more: pure long tail, low competition, unmistakable intent. The second returns exactly two-word queries: head terms, high volume, and a barrier a young domain will not clear for months. For a new site the first pattern is worth ten times the second, and that is the strategic decision almost nobody makes consciously.

Recipe 11 · Separating Spanish from English

(?i)(tracker|tracking|best |how to|software|tool|free |app for|checker)

It looks like an exotic pattern until you check your own data. On our property, the United States delivers more impressions than Colombia, and a large chunk of that demand arrives in English through queries such as seo position tracking mac and iphone rank tracking. Colombia brings fewer impressions but a far better average position: 9.4, against ranges of 20 to 70 in every other market.

That contrast is exactly the kind of decision a well-placed filter settles in thirty seconds and that you never see without one. It is also why this blog exists in two languages: the data said there was English-language demand before we knew it.

The filter that pays best: high impressions, zero clicks

Confirmed demand you are not capturing. The shortest and most profitable list in the report.

Start with what cannot be done: Search Console has no CTR filter and no position filter in the interface. Clicks, impressions, CTR and position are metrics, and filters operate on text dimensions. Any tutorial promising you a regex for "queries with CTR below 1%" is confusing the two.

The real way to do it is four steps, and regex is the first one:

Step 1 · Exclude your brand

Apply recipe 2 with "doesn't match regex". Brand queries with many impressions and few clicks are rarely a genuine content problem, so drop them from the analysis at the start.

Step 2 · Widen the range to three months or more

Over 28 days, a seasonal or low-frequency query never accumulates enough impressions to stand out. Three months is the sensible minimum; six is better if the site has little traffic.

Step 3 · Sort by impressions and export

Click the impressions column header to sort descending, then use the export button. Sheets or CSV, it makes no difference. What matters is getting the table out of the browser.

Step 4 · Filter clicks equal to zero in the sheet

That is the numeric filter the interface refuses to give you. Sort the result by impressions and keep the top 20 rows. That is your work list for the quarter.

What this looks like on a brand-new domain: our own numbers

Rankiamos.com logged 581 impressions and 1 click over 90 days. This is not a textbook example with comfortable figures: it is a new domain with no authority, starting from zero. That is precisely why it is useful, because it shows what you can extract when the numbers are small. These are the commercial queries with the most impressions after running the four steps:

Queries with impressions and no clicks in Search Console over 90 days
Query Impressions Avg. position Read
app de seo tracking 70 23.8 Priority 1: commercial, two pages away
seo latam 33 69 Too far out, needs new content
iphone rank tracking 24 27.6 Matches the product, attack in English
seo position tracking mac 14 18.4 Closest to the top 10
posicion google 7 17.9 Generic, unclear intent
como posicionarse en el numero 1 de google 7 74 Long tail, heavy competition

Search Console data for rankiamos.com, 90-day window closing in July 2026. The whole site recorded 1 click in that period, so every query above is effectively at zero clicks.

The useful read is not "we are doing badly", which we already knew. It is this: the commercial query with the most impressions sits at position 23.8, and another sits at 18.4. Neither is an impossible jump from page one. Meanwhile "seo latam" at position 69 is a head term you do not win with a tweak — you win it with months of content and links. That turns a six-row table into a concrete prioritisation decision.

One aside before moving on: if these filters show several different URLs competing for the same query, do not treat it as a CTR problem. It is a different issue with a different fix, covered in the guide on spotting keyword cannibalization with Search Console.

From a list of Search Console queries to a list of keywords you actually track

So far you have done half the job. Finding keywords in Search Console is useful, but the report has three structural limits that stop it from working as a monitoring system, and it is worth knowing them before building a process on top.

You only see what you already have

Search Console reports queries where your site already appeared. Anything Google has never shown you simply does not exist in the report, however good the pattern is. It is a rear-view mirror, not radar.

Position is an aggregated average

The number you see blends devices, countries and times of day into one figure. It could be a stable position or the mean of something swinging wildly, and the report gives you no way to tell them apart.

There is no alert when something drops

A regex is a one-off query. If tomorrow you lose six positions on your most profitable term, Search Console will not tell you: you find out next time you open the report, which with luck is two weeks away.

That is why the natural workflow has two halves. Search Console handles discovery, because it knows things no external tool can guess. A rank tracker handles monitoring, because it measures the exact position every day, in the city you specify, with mobile and desktop separated. How to wire the two together is laid out step by step in the guide to connecting Google Search Console to a rank tracker, which is the starting point if your property is not linked yet.

An honest warning about the handover: when you add a keyword to a tracker, its history starts that day. It is not retroactive. Whatever already happened lives in Search Console and stays there. So do not leave the final list for three months from now — every week you wait is a week of your own history you will never have.

How to pick 5 keywords on Free or 50 on Pro with this method

Quota forces you to decide, and that is a good thing. The Rankiamos Free plan is 5 keywords with an automatic weekly check, no card required. Pro is 50 with a daily check, and on both plans you can re-check a keyword by hand 6 hours after its last check. The part that catches people out is that every keyword and city combination consumes one unit: 20 terms across 3 cities is 60 units, not 20. The price does not go up when you add cities, but the quota does get spent. The exact limits of each plan are on the pricing page.

With that constraint in place, this is the selection order we apply to whatever the regex produced:

Keyword selection criteria by plan
Priority Criterion Free (5) Pro (50)
1 Commercial, position 11 to 25, with impressions 3 13
2 Already in the top 10: defending what pays 2 10
3 Long tail with clear intent (5+ words) 0 12
4 Second and third city for the key terms 0 10
5 Long shots and distant head terms 0 5

With 5 units there is no room for curiosity. The rule is brutal and it works: three commercial queries stuck between position 11 and 25, and two already in the top 10 that you cannot afford to lose. No head terms 60 positions away, however pretty the volume looks — the app measures up to the top 30, so that keyword just shows as "30+" for six months and you learn nothing.

With 50 units you can afford structure, and the split in the table works for most projects. The one line I would argue about case by case is the fourth: opening cities only makes sense if your business genuinely competes locally. If you sell software across a whole continent, those 10 units go further spread across more distinct terms than across more locations for the same ones.

One last thing about frequency. The weekly check on Free is enough to see underlying trends, but not to catch a drop in time. If the list you pulled with these filters contains terms that real revenue depends on, the daily check stops being a luxury. The difference between finding out today and finding out next Tuesday is six days of lost traffic nobody gives back.

How Rankiamos handles it

Regex gives you the list. This is what happens to it next.

🔗 Search Console connected on the Free plan

The Google Search Console integration is included on the free plan too, alongside the site scan. It is not a paid-tier feature: it is where the keywords worth tracking come from in the first place. Inside the app you see up to 250 queries from the last 28 days, one property per project; you run the regex filters in this post in Search Console itself.

📈 Search volume for prioritising

On Pro, every keyword can show its search volume, fetched on demand, along with its CPC, estimated traffic value and seasonality. That is the data point the performance report is missing when you have to decide which of two similar-impression queries deserves the quota unit.

🤖 AI analysis and AI Overview citations

On Pro you can request AI analysis for any keyword (30 a month), and each Google keyword shows whether Google's AI Overview cites your domain. On both plans, the daily alert summary flags when an AI Overview appears, starts citing you or stops citing you. Especially useful on the question-shaped queries from recipes 5 and 6.

⌚ Daily checks in your pocket

Automatic daily checks on Pro, manual re-checks 6 hours after a keyword's last check, and widgets on iPhone, the lock screen and Apple Watch on both plans. On Pro, tracking mobile and desktop together uses 2 quota units, one per device.

So there are no surprises: Rankiamos is a native app for iPhone, iPad, Mac and Apple Watch, and its interface is in Spanish only. There is no web version and no Android version today. If your team works on Windows, this is not for you, and I would rather say so here than after you install it.

Try Rankiamos free

Free plan: 2 projects, 5 keywords, weekly check, Search Console included · No card

The whole thing in one sentence

Eleven well-chosen patterns turn an unreadable thousand-row table into five workable lists: brand, non-brand, questions, comparisons and geographic demand. None of them is complicated and none needs anything RE2 refuses. The hard part is not the syntax, it is having the discipline to finish the exercise with a short list instead of a screenshot.

The next step is just as simple: take the 5 or the 50 queries that survived the filter, put them on a fixed measurement schedule and stop guessing. If you want to see what the product does with that list once loaded, it is all in the tracker feature breakdown.

Frequently asked questions

Does Search Console accept any regular expression?
No. Search Console runs on RE2, the regex engine Google built to guarantee linear-time execution. That speed guarantee comes at a price: RE2 drops every construct that forces the engine to backtrack over the string. In practice that means no lookahead, no lookbehind, no backreferences, no atomic groups and no recursion — all of which exist in PCRE, the flavour your text editor and most scripting languages use. Everything you actually need day to day works fine: alternation with the pipe, grouping with parentheses, character classes with brackets, quantifiers, start and end anchors, and inline flags such as case-insensitivity. If you copy a pattern off the internet and Search Console rejects it, nine times out of ten the culprit is a lookahead.
Is Search Console regex case-sensitive?
In practice it rarely matters, because the performance report hands you queries already normalised to lowercase. Even so, the habit worth keeping is to prefix every pattern with the inline case-insensitive flag. It costs nothing, changes nothing when it is not needed, and saves you the day you switch to the Page dimension, where URLs really can contain uppercase characters. What Search Console does treat as different is accented characters. In Spanish-language markets that is a serious issue: most people type from a phone without accents, so a pattern that only covers the accented spelling silently discards half the matching queries. Always list both spellings.
Can I use regex on the Page filter and not just on Query?
Yes, and it is one of the most useful things in the report. The Page dimension accepts the same custom regex filter, which lets you isolate an entire folder, a URL pattern or a set of templates without building filters one by one. Typical use cases: measuring only the blog, only product detail pages, or only URLs carrying a specific parameter. One practical tip: instead of escaping the dot in a domain with a backslash, wrap the dot in square brackets. It does exactly the same job, survives copy-pasting between Slack, Notion and the browser far better, and removes the risk of a stray backslash breaking the whole pattern.
Why does my regex return nothing when I know those queries exist?
Four causes explain almost every case. First, anonymisation: Search Console hides very low-volume queries to protect user privacy, so there is a long tail that simply is not in the report and no filter will surface it. Second, accents, as covered above. Third, anchoring: a pattern that opens with the start-of-string symbol only matches when the query begins exactly there, so if you expected partial matches you need to drop it. Fourth, the date range: if you are looking at the last 28 days and the query last appeared four months ago, the pattern is fine and the time window is the problem. Check the window before rewriting the pattern.
Can I filter by CTR or by position using regex?
No, and it is worth knowing before you lose half an hour trying. Regular expressions in Search Console operate on text dimensions: Query and Page. Clicks, impressions, CTR and average position are metrics, not dimensions, and the interface offers no numeric filter for them. The workflow is two-step: apply the regex first to narrow the universe of queries down to the segment you care about, then sort by impressions, export to a spreadsheet, and apply the numeric condition there — clicks equal to zero, position inside a range, whatever you need. The regex does the dirty work of segmenting; the spreadsheet does the arithmetic.
How many of the keywords I find should I actually track?
It depends on your plan, and the maths is stricter than it looks. The Rankiamos Free plan gives you 5 keywords with an automatic weekly check. The Pro plan gives you 50 with a daily check, and on both you can re-check any keyword by hand 6 hours after its last check. The catch is that every keyword and city combination consumes one unit of quota: pull 40 queries out of a regex filter, want them in three cities, and you are at 120 units — which does not fit in Pro. The rule we apply is to prioritise by accumulated impressions and by distance to the top 10, measure in a single location first, and only open extra cities when the data would actually change a decision.
Is this worth doing on a site with very few impressions?
Yes, and that is where it shows most. Our own property logged 581 impressions and 1 click over 90 days, which is a laughably small number in absolute terms. At that volume the query table fits on one screen and you could read it unfiltered. What regex adds is not noise reduction but grouping: segmenting by intent, language or country reveals coherent blocks of demand where there appeared to be only random noise. On a young site that matters more than on a large one, because the content decisions of the first few months define the niche you end up competing in. With low volume, regex is a diagnostic tool rather than a cleanup tool.

Try Rankiamos free for 7 days.

The Free plan needs no card. The Pro trial runs through your Apple account; cancel before day 7 and you pay nothing.

iPhone iOS 17.0+
iPad iPadOS 17.0+
Mac macOS 14.0+