Skip to content
Beta · version 0.7.1 · commands and the JSON format may still change.

Recognized patterns

Tabalyst Scan applies detectors to eligible field values and records matched, ambiguous, invalid, unmatched and untested counts. Tabalyst Report shows detectors with evidence in Detectors and formats. A pattern match means the value fits the detector’s rule; it does not prove that an address, phone number or identifier exists in an external system. The Types page explains how one detector can become a semantic type.

The table lists every built-in detector ID. Its examples show representative forms, not the complete grammar. Defaults can change through scan.detectors. A field can have evidence from several detectors at once.

Detector IDWhat is recognizedRepresentative forms and limits
numberIntegers, decimals and scientific notation under configured dot/comma conventions.42, 12.5, 12,5, 1e3; 1,234 is ambiguous unless a convention is set or the other numbers of its column prove one.
dateNumeric dates, ISO date-times, times and English/French month-name dates.2026-10-06, 02/03/2026, 2026-10-06T12:30Z, 13:45, 26 September 2026. Orders and separators are configurable; impossible dates are invalid, and ambiguous DMY/MDY values stay unresolved by default.
booleanConfigured pairs of textual truth values.Defaults: true/false, yes/no, y/n, oui/non, vrai/faux; native JSON booleans are already technical values.
enumerationA low-cardinality field, considered as a whole.Defaults: at least 500 eligible values and at most 49 distinct analytical values; case-sensitive by default.
emailBare local@domain with a dot-atom local part and valid domain syntax.name@example.com; display names and addresses embedded in URLs do not match. Local part is limited to 64 characters.
urlAbsolute URLs with configured schemes, or www. addresses.Defaults: http, https, ftp and www.; syntax, host and port are checked without network access.
phoneNorth American (nanp) and French (fr) phone forms.Defaults include national and supported international prefixes; punctuation and leading digits are checked, but assigned ranges are not.
postal_codeCanadian postal codes and US ZIP / ZIP+4.Defaults: ca, us; K1A 0B1, 12345, 12345-6789; valid shape does not prove an assigned postal code.
currencyNumber with supported currency symbol or ISO code before or after it.$12.50, 12,50 EUR; number conventions still apply.
percentageSigned number with optional space and %.12%, -2.5 %; the numeric part is not divided by 100.
quantityNumber followed by a bounded unit-shaped suffix.10m, 10 Go, 90 km/h; currency codes and ordinal endings are excluded, and units are not semantically validated.
uuidHyphenated, braced or urn:uuid: 128-bit hexadecimal form.Case variants are recorded; version and variant are summarized.
ip_addressIPv4 dotted decimal and IPv6 text, including compressed and embedded-IPv4 forms.Invalid octets, leading zeros, compression and group counts can be reported.

email, phone and ip_address are sensitive detectors. When they match a field, its examples, value profile and rows of the data sample are masked when scan.exposure.sensitive_values is mask; they are shown by default. A configured pattern can also be sensitive. postal_code is not sensitive by default. See exposure settings.

Besides detectors, Tabalyst Scan discovers the structure of text columns from the distinct values it sampled. Tabalyst Report shows it in Patterns. The vocabulary is small:

TermMeaning
FormatThe exact form of one value, one symbol per character: AK-1234 is AA-9999.
PatternThe values of one structure and one set of lengths, with their constants: 'AK-'9999. A discovered pattern has a fixed length at every position and never a range.
FamilyThe patterns of one structure that differ only by their lengths or constants: 'INV-'999, 'INV-'9999 and 'INV-'99999. It is not a pattern; it presents itself as the list of its patterns with their counts.
FacetA dimension along which a family is specialized: its composition, its lengths, or the content of a token (its first characters, last characters or whole value).
NodeA pattern plus a constraint on a facet, with its counts: the part of AA-9999 that starts with AK.
TableThe values of a facet with their counts, when no node reads it. Its cells and its others add up to the family.

Every count comes in two measures: distinct values and occurrences. The notation is the one the page of a column explains: 9 digit, A capital, a lowercase letter, @ any letter, X capital or digit, x lowercase letter or digit, # ASCII letter or digit, text between quotes a constant. The discovery reads only the samples of the Scan; the second pass counts the same hierarchy on every value of the file. A value that no family reads is an observation, never an error. See the Scan format for the JSON and Reading a Report for the page.

scan.patterns adds organization-specific detectors named pattern:<id>. The Python regular expression must match the whole value. For example:

{
"scan": {
"patterns": [
{
"id": "customer_number",
"regex": "C-\\d{4}",
"description": "Customer number",
"accepts": ["string"],
"sensitive": false,
"max_input_length": 256
}
]
}
}

This recognizes C-0042 but cannot validate that the customer exists. accepts selects native types (string, integer, number, boolean); sensitive controls exposure when the pattern matches; and max_input_length skips longer values. The pattern settings specify limits and validation.

ResultMeaningPractical reading
MatchedThe detector recognized the value.It contributes to a possible semantic-type interpretation.
AmbiguousSeveral supported readings remain.It is separate from an unambiguous match; date and number settings can resolve some cases.
InvalidThe value has a relevant shape but impossible or disallowed content.Inspect the value and rule; this is separate from a column type error.
Not matchedThe detector tested the value and its rule did not fit.Another detector may still match.
Not testedThe value was skipped, for example after adaptive warm-up.Do not read its match percentage as a complete test of all present values.
FailedDetector processing failed for the field.The scan diagnostic gives the reason.

In Report, Matched is a count and a percentage of eligible values; Ambiguous and Invalid are separate counts. Formats gives syntax labels and counts, which vary by detector and configuration. Adaptive detection can skip values after its warm-up, while number and date always test every eligible value. The Scan format records every detector’s complete coverage and bounded evidence; the Report JSON profile retains its exposed result. The HTML detector table only lists detectors with evidence or a failure.