Parse Expressions

Parse expressions are a simplified form of regular expressions. The actual regular expression is hidden behind the type name / hint.

Parse expressions are used in step definitions as a simplified alternative to regular expressions. They are used for parameters and type conversions (which are not supported for regular expression patterns).

# -- FILE: features/steps/example_steps.py
from behave import when

@when('we implement {number:d} tests')
def step_impl(context, number):  # -- NOTE: number is converted into integer
    assert number > 1 or number == 0
    context.tests_count = number

The following tables provide a overview of the parse expressions syntax. See also Python regular expressions description in the Python re module.

Type

Characters Matched

Output

l

Letters (ASCII)

str

w

Letters, numbers and underscore

str

W

Not letters, numbers and underscore

str

s

Whitespace

str

S

Non-whitespace

str

d

Digits (effectively integer numbers)

int

D

Non-digit

str

n

Numbers with thousands separators (, or .)

int

%

Percentage (converted to value/100.0)

float

f

Fixed-point numbers

float

F

Decimal numbers

Decimal

e

Floating-point numbers with exponent e.g. 1.1e-10, NAN (all case insensitive)

float

g

General number format (either d, f or e)

float

b

Binary numbers

int

o

Octal numbers

int

x

Hexadecimal numbers (lower and upper case)

int

ti

ISO 8601 format date/time e.g. 1972-01-20T10:21:36Z (“T” and “Z” optional)

datetime

te

RFC2822 e-mail format date/time e.g. Mon, 20 Jan 1972 10:21:36 +1000

datetime

tg

Global (day/month) format date/time e.g. 20/1/1972 10:21:36 AM +1:00

datetime

ta

US (month/day) format date/time e.g. 1/20/1972 10:21:36 PM +10:30

datetime

tc

ctime() format date/time e.g. Sun Sep 16 01:03:52 1973

datetime

th

HTTP log format date/time e.g. 21/Nov/2011:00:07:11 +0000

datetime

ts

Linux system log format date/time e.g. Nov 9 03:37:44

datetime

tt

Time e.g. 10:21:36 PM -5:30

time

If parse_type module is used, the cardinality of a type can be specified, too (by using the CardinalityField support):

Cardinality

Description

?

Pattern with cardinality 0..1: optional part (question mark).

*

Pattern with cardinality zero or more, 0.. (asterisk).

+

Pattern with cardinality one or more, 1.. (plus sign).