30 Search Console Regex Patterns for SEO Analysis

Use 30 Search Console regex patterns to filter queries and pages, check examples, and interpret brand, content and URL performance with clear limits.

Editorial policy

Google Search Console regex filters group queries or page URLs by a text pattern. They are useful for comparing brand wording, reviewing product questions or isolating a site section without entering every value separately. Choose the correct dimension first: a pattern for search queries does a different job from a pattern for full page URLs.

These 30 Search Console regex patterns cover practical query and page groups. Each includes a match, a close nonmatch and a decision it can support. Acme, Contoso, product codes and example.com URLs are fictional placeholders; replace them with your actual vocabulary and URL structure.

Analysis task Start with What the result represents
Questions, brands and product wording Query patterns 1–15 Reported search terms matching your text rule
Content, host and market sections Page patterns 16–22 Reported URLs matching your site structure
Parameters and URL variations Page patterns 23–30 Variations visible in performance data, requiring separate investigation

A regex filter changes a report view. It does not change your website, recover hidden queries, identify an AI-generated search or establish that a URL is indexed.

Set up the right Search Console regex filter

Open Performance > Search results, select the property and keep a record of the date range, search type, country and device settings. Then use + Add filter > Queries or Pages > Custom (regex). Some interface versions label the add button "+ New." Paste the pattern without surrounding / delimiters, choose Matches regex or Doesn't match regex, and apply it.

Google's advanced filtering instructions establish three rules that matter throughout this library:

  • Matching is partial by default. price can match anywhere in a value; ^price$ requires that whole value.
  • Matching is case-insensitive by default. Add (?-i) when case is part of the analysis, as in pattern 28.
  • Search Console uses RE2 syntax. Lookahead, lookbehind and backreferences are not supported. To exclude a group, use the report's Doesn't match regex option with an ordinary matching pattern.

Parentheses group alternatives, | means "or," ^ anchors the start and $ anchors the end. Escape literal metacharacters: example\.com matches the dot in the hostname, and \? matches a question mark. The RE2 syntax reference documents these details. Its \b boundary is based on ASCII word characters, so the English examples below need deliberate adaptation for accented names and other scripts.

A pattern selects existing rows. Capturing groups do not create extracted columns or label separate categories for you. Use a different report view or an export when you need a classification table.

For patterns 1-26 and 28-30, use Matches regex on the stated dimension. Pattern 27 explicitly uses Doesn't match regex. You can invert other patterns when exclusion answers your question, but that is another view of the same pattern, not another item in this list.

Use normal country and device filters for those dimensions. Also confirm that query data is available for the selected search type; Google's dimension documentation says the Queries dimension is unavailable for multimodal searches.

Query patterns for topics and buying questions

Use these on Queries. Treat the results as wording-based groups to inspect, rather than definitive intent labels. A person searching for a price might be researching, comparing or already using a product.

1. Collect known brand names and spellings

Plain text
\b(acme|akme|acme[ -]corp)\b

Matches: ACME Corp pricing. Does not match: acmeology pricing.

Replace the alternatives with names and misspellings you have actually observed. Compare this cohort with its inverse to understand reported brand-associated searches. A dictionary-word brand needs extra context; matching a name does not establish brand awareness. Google's built-in branded filter can use a different classification, so record which definition your report uses.

2. Group related topic phrases

Plain text
\b(keyword\s+research|technical\s+seo|site\s+audit)\b

Matches: technical seo checklist. Does not match: technical seoul guide.

This gathers several phrases into one theme without accepting every occurrence of a short substring. Review the landing pages for missing or poorly matched coverage. It does not calculate topic authority, and each phrase can still include mixed needs. Add terms from your own editorial taxonomy rather than collecting unrelated phrases to increase the total.

3. Find queries beginning with question words

Plain text
^(who|what|when|where|why|how|which|can|does|do|is|are|should)\b

Matches: how do redirects work. Does not match: however redirects work.

The start anchor and word boundary keep a common question opener from matching inside another word. Check whether the landing page answers the actual question early enough. This English list is not a complete detector of questions: statements, punctuation and other languages need different handling. A question-like query is not evidence that an AI assistant generated it.

4. Compare two named products in either order

Plain text
\bacme\b.*\b(vs|versus)\b.*\bcontoso\b|\bcontoso\b.*\b(vs|versus)\b.*\bacme\b

Matches: contoso versus acme features. Does not match: acme versus another tool.

Replace both names, escaping any literal metacharacters. This requires both entities around a comparison word and supports either ordering without lookahead. It is useful for reviewing one comparison page against the queries it serves. It misses comparisons phrased without "vs" or "versus"; inspect real terms before expanding the rule.

5. Identify explicit alternative requests

Plain text
\balternatives?\s+(to|for)\s+\S+

Matches: alternative to acme. Does not match: alternative music.

Review which competing products people name and whether an existing comparison page answers their requirements fairly. The expression targets a specific phrase structure. It does not catch acme alternatives, nor should every matching query automatically justify a new page. Consolidate equivalent needs instead of creating one thin article per competitor.

6. Review price and budget wording

Plain text
\b(prices?|pricing|costs?|affordable|cheap)\b

Matches: site audit cost. Does not match: costume ideas.

Use the cohort to check whether pricing, billing basis and important limits are easy to find on the landing page. The boundaries avoid obvious substring mistakes. Words such as "cheap" can describe quality rather than a budget, so read the rows before deciding that users want a lower price or that a pricing change is necessary.

7. Find purchase-oriented modifiers

Plain text
\b(buy|purchase|order|shop)\b

Matches: buy running shoes. Does not match: workshop equipment.

For a store, inspect whether these queries reach the relevant product or collection rather than a loosely related article. Search Console reports search performance, not orders; matching a purchase verb does not prove a transaction or reveal conversion rate. Review analytics separately when evaluating revenue, using compatible dates and definitions.

8. Surface support and product-problem wording

Plain text
\b(broken|repair|manual|warranty|troubleshoot|not\s+working)\b

Matches: acme widget not working. Does not match: working holiday guide.

Check whether support documentation or product policy pages resolve the repeated issue. A warranty query may be pre-purchase research, and a repair query can concern another manufacturer's product. Validate the association before treating the group as evidence of defects, unhappy customers or an instruction to change your product.

9. Isolate explicit proximity and opening-hours phrases

Plain text
\b(near\s+me|nearby|open\s+now)\b

Matches: florist near me. Does not match: open source florist software.

Review location-page relevance and the accuracy of business information for these queries. This catches explicit local wording, not every local search. It also does not identify the searcher's precise position. Use the report's country dimension where appropriate, and a relevant local-search workflow for geographic detail that Search Console does not provide.

10. Review named-city searches

Plain text
\b(new\s+york|los\s+angeles|chicago|boston)\b

Matches: boston wedding photographer. Does not match: bostonian shoe care.

Replace the city list with markets you actually serve. This answers a different question from proximity wording: which named places occur in the reported searches? A city can be a destination, a brand or part of another topic, so matching it is not proof that the search originated there. Inspect the page and query together before prioritizing local content.

Query patterns for wording and specific products

These also use Queries > Matches regex. They select spelling or text structure, which can be useful even when a query's commercial intent is unclear.

11. Combine ordinary spelling and separator variants

Plain text
\be[- ]?commerce\b

Matches: e-commerce platform. Does not match: e commercial property.

This example also accepts e commerce and ecommerce. Use it to keep reporting consistent when a term has several ordinary forms. It does not justify publishing separate pages for each spelling. The optional character handles one space or hyphen; if your actual data contains different spacing, adapt the rule and verify both intended and unintended matches.

12. Select queries containing at least four tokens

Plain text
^\S+(\s+\S+){3,}$

Matches: best running shoes for beginners. Does not match: running shoes.

Each token is a run of non-whitespace characters, separated by whitespace. Use this to review detailed wording that broad query groups can hide. Leading or trailing whitespace is outside this exact pattern. Four tokens do not establish low competition, low search volume, conversational origin or AI authorship; length is the only property being measured.

13. Match a literal plus-sign term

Plain text
(^|\s)c\+\+(\s|$)

Matches: learn C++ online. Does not match: learn C online.

For a developer education site, this separates a specific technology from a shorter ambiguous token. Escaping + matters because an unescaped plus is a repetition operator. This version expects whitespace or a string edge around C++; C++, will not match. Extend the delimiters deliberately if your real query sample contains punctuation you want to include.

14. Find queries containing your product-code format

Plain text
\b[a-z]{2,4}-[0-9]{3,5}\b

Matches: AB-123 replacement filter. Does not match: AB-12 replacement filter.

This illustrative catalog uses two to four letters, a hyphen and three to five digits. Adapt it to your real SKU convention, then check whether model-specific searches reach the correct product or support page. A matching code can also identify a competitor's item; reconcile it with your catalog before calling the cohort demand for your products.

15. Separate searches mentioning nearby calendar years

Plain text
\b202[5-7]\b

Matches: seo checklist 2026. Does not match: seo checklist 2024.

The range covers 2025 through 2027. Use it when reviewing whether a page answers queries with an explicit year, then compare the actual query wording and selected period. This does not filter the report's dates: a search performed today can mention an earlier year. Update the expression when the relevant planning window changes instead of treating it as an evergreen current-year detector.

For a more specialized terminology cohort, our AI and SI keyword worksheet shows how to keep overlapping keyword definitions separate. The same reporting discipline applies here: record what your expression includes, not what you assume the query proves.

Page patterns for content and market groups

Apply this group to Pages > Matches regex. Page rows contain full URLs, so the examples anchor the scheme and hostname where needed. Replace www.example.com with the exact host used in your report, keeping literal dots escaped.

Most Performance data is credited to the canonical URL. These filters select reported performance rows; they do not enumerate every duplicate URL, every server response or every page Google has indexed.

16. Select an exact set of important landing pages

Plain text
^https://www\.example\.com/(pricing|contact|demo)/?$

Matches: https://www.example.com/pricing/. Does not match: https://www.example.com/pricing/team/.

Use this for a small, deliberately defined set of conversion-oriented pages. Optional trailing slashes accommodate the two listed forms; the end anchor excludes child pages and query strings. If the actual canonical URLs differ, edit the list. The combined report shows search performance, not whether visits completed a demo request or purchase.

17. Group several editorial sections

Plain text
^https://www\.example\.com/(blog|guides|resources)(/|[?#]|$)

Matches: https://www.example.com/guides/redirects/. Does not match: https://www.example.com/blogs/redirects/.

Use a section family when ownership or reporting spans several content directories. The boundary after the section name prevents similarly named paths from leaking into the cohort. Review the Pages table after applying it; a matching folder name does not guarantee that every page belongs to the same editorial or commercial purpose.

18. Isolate one exact subdomain

Plain text
^https://help\.example\.com(/|$)

Matches: https://help.example.com/account/. Does not match: https://help.example.com.evil.test/account/.

This is useful in a property whose data includes a support host alongside the main website. An escaped hostname and explicit boundary avoid a broad substring match. A URL-prefix property's scope may not include that subdomain at all. Check the selected property's coverage before interpreting an empty result as missing search visibility.

19. Review locale-prefixed sections

Plain text
^https://www\.example\.com/(en|fr|de)(/|$)

Matches: https://www.example.com/fr/catalogue/. Does not match: https://www.example.com/french/catalogue/.

Use this when the site's actual routing convention puts a language or locale code first. It groups URL structure, not the searcher's location or the language of every page. Separate the locale alternatives into individual views when comparing them, and verify the site's canonical and localization setup before diagnosing an apparent market gap.

20. Select numeric product-detail routes without their children

Plain text
^https://www\.example\.com/products/[0-9]+/?$

Matches: https://www.example.com/products/123/. Does not match: https://www.example.com/products/123/reviews/.

This hypothetical catalog uses numeric product IDs. The final anchor keeps review and help subpages out of a product-detail cohort. Adapt the rule to your real routing contract rather than assuming every catalog uses numeric identifiers. A successful match also does not establish that the page is in stock, purchasable or returning a healthy response today.

21. Identify year-and-month archive paths

Plain text
^https://www\.example\.com/blog/20[0-9]{2}/(0[1-9]|1[0-2])(/|$)

Matches: https://www.example.com/blog/2026/10/release/. Does not match: https://www.example.com/blog/2026/13/release/.

This selects an archive structure with years 2000-2099 and months 01-12. It is useful during a migration from dated paths or when comparing an older publishing template with a newer one. The URL's year is not a reliable content-update date; inspect the page and migration map before deciding that it is stale or needs a redirect.

22. Find pagination implemented in the path

Plain text
^https://www\.example\.com/(blog|category)/([^/?#]+/)?page/[0-9]+/?$

Matches: https://www.example.com/category/shoes/page/3/. Does not match: https://www.example.com/category/shoes/page-guide/3/.

This covers a blog index and an optional category segment before /page/number. Compare these rows with their actual listing pages and intended canonicals. A numeric path does not prove a valid page number, indexing problem or duplicate. Query-parameter pagination uses a different URL structure and requires an expression designed for that structure.

Page patterns for URL variations worth reviewing

These patterns help locate reported URL forms for investigation. A visible row is evidence about the report; it is not proof of a current redirect, HTTP error or canonical defect. Most examples use Pages > Matches regex, with the explicit exclusion exception in pattern 27.

23. Find nonempty tracking parameters

Plain text
[?&](utm_(source|medium|campaign|term|content)|gclid|fbclid|msclkid)=[^&#]+

Matches: https://www.example.com/p?utm_source=email. Does not match: https://www.example.com/utm_source/email.

The separator and equals sign identify a parameter name rather than a path fragment. Use the rows to decide which URLs deserve a canonical and internal-link check. A parameterized URL might receive little or no separate Performance data because credit goes to another canonical. An empty result cannot establish that tracking variants do not exist.

24. Review faceted-navigation parameter families

Plain text
[?&](color|size|brand)=[^&#]+

Matches: https://www.example.com/shoes?color=blue&size=8. Does not match: https://www.example.com/shoes?colorway=blue.

Replace the names with real facets from your store. This collects parameter-based filter combinations without also accepting similarly named parameters. Review useful search landing pages separately from unwanted combinations before changing any rules. Matching a facet does not mean the page should be blocked, noindexed or canonicalized to the unfiltered listing.

25. Locate internal-search parameter URLs

Plain text
[?&](q|s|search)=[^&#]+

Matches: https://www.example.com/?s=boots. Does not match: https://www.example.com/?sort=boots.

Use this when those parameter names actually represent the website's internal search. They do not have a universal meaning: q could be an unrelated application value. Check the destination before classifying it. The expression operates on page URLs, not on the Queries dimension or a complete log of what visitors searched inside your site.

26. Identify document-file landing URLs

Plain text
^https?://[^/?#]+/[^?#]*\.(pdf|docx?|xlsx?|pptx?)([?#]|$)

Matches: https://www.example.com/downloads/guide.pdf?download=1. Does not match: https://www.example.com/downloads/pdf-guide/.

This requires the extension in the URL path, avoiding a query value that merely names a PDF. Check whether important information is accessible, current and connected to the rest of the site. A filename extension is a useful grouping convention, not proof of the response's media type. Verify headers and content before making document-delivery changes.

27. Exclude just the homepage forms you specify

Use Pages > Doesn't match regex for this item:

Plain text
^https://(www\.)?example\.com/?$

Matches: https://www.example.com/. Does not match: https://www.example.com/blog/.

These examples describe the pattern itself. The exclusion mode removes the matching homepage forms and retains the blog URL. This avoids unsupported negative lookahead. Adapt the allowed hosts and slash forms to your property, then inspect retained rows; a homepage with a query string is deliberately outside this exact expression.

28. Find uppercase letters specifically in the path

Plain text
(?-i)^https?://[^/?#]+/[^?#]*[A-Z]

Matches: https://www.example.com/Blog/guide. Does not match: https://www.example.com/blog/guide?Campaign=Email.

The inline case setting matters because Search Console regex ignores case by default. The pattern stops the path scan at ? or #, so uppercase query values do not qualify. Inspect whether the listed path is intentional or an inconsistent variant. Finding uppercase characters alone is not an instruction to rename URLs or introduce redirects.

29. Review legacy HTML or ASP-style path endings

Plain text
^https?://[^/?#]+/[^?#]*\.(html?|aspx?)([?#]|$)

Matches: https://www.example.com/old-page.aspx. Does not match: https://www.example.com/html-help/.

Use this to reconcile a known legacy template with the intended migration map. The escaped dot and ending test avoid ordinary words in modern slugs. A legacy-looking extension is not inherently an SEO problem. Confirm current responses, replacement content and canonical signals before deciding whether an old URL should remain, redirect or be removed.

30. Find encoded spaces in reported URL paths

Plain text
^https?://[^/?#]+/[^?#]*%20

Matches: https://www.example.com/old%20guide/. Does not match: https://www.example.com/guide/?q=old%20guide.

This isolates a specific encoded path form without confusing it with a search parameter value. Check whether links, sitemaps and canonicals use the same intended URL representation. It does not detect every encoding variation or every duplicate, and it should not trigger a blanket decoding rule. Review the actual URL and destination before changing either.

For the broader decisions behind the parameter examples, see how URL parameters affect crawling and indexing. Keep that technical investigation separate from the performance cohort you started with.

Validate each filter and interpret the result

Before saving a filter for a recurring report, write down its purpose and check at least one value that should match and one close value that should not. Test the version you actually edited, including the hostname, punctuation and boundaries. A pattern can compile successfully while selecting the wrong rows.

For this library, all 30 patterns were compiled and run against the 60 fictional match/nonmatch examples above on October 26, 2026, using Node.js 24.16.0 and re2-wasm 1.0.2. Six additional boundary checks passed, and three unsupported lookaround/backreference examples were rejected. The RE2 WebAssembly project provides bindings to the engine; it explicitly says it is not an officially supported Google product. This was a local syntax-and-membership check, not a test of a live Search Console property or a measurement of SEO results.

Keep a compact record alongside any filter you adopt:

Plain text
Purpose: Review support-document performance without homepage rows
Dimension: Pages
Mode: Doesn't match regex
Pattern: ^https://(www\.)?example\.com/?$
Pattern should match: https://www.example.com/
Pattern should not match: https://www.example.com/help/reset-password/
Report controls: Record property, dates, search type, country and device

Then check the actual filtered rows. For example, to examine question queries associated with editorial content, apply pattern 3 to Queries and pattern 17 to Pages, adapting the section list to the intended scope. Those are separate dimension filters. Inspect the Queries table for wording and the Pages table for destinations; no single regex joins or extracts both fields for you.

When a result is empty, first check the property, report controls, filter direction and exact strings. An unavailable query dimension, a different canonical URL, an overly strict host or an unsupported expression can explain the result. It is not enough to conclude that nobody searches the topic or that the page is missing from Google.

Google's report discrepancy guidance explains why chart and table totals can differ. Anonymized queries are omitted from query rows and are excluded from chart totals when a query filter is applied. Other rows can be truncated, and page-based aggregation differs from property-based aggregation. Consequently, your brand and non-brand filtered views should not be presented as a complete accounting of an unfiltered total.

Compare like with like: retain the same property, date definition, search type and other controls, then describe the filter change explicitly. Calculate cohort CTR from total clicks divided by total impressions rather than averaging row CTR percentages. For a changing rate, use our CTR-drop diagnosis guide; for ranking interpretation, see how Search Console average position works.

Keep the next action tied to the evidence. A wording group can suggest a page to review, and a URL group can suggest a technical check. The filter itself cannot prove AI authorship, search demand, a current HTTP error, indexing status or the cause of a performance change.

Related posts

Keep reading practical SEO guides from the Screpy blog.

View all posts