Behave 正则表达式


让我们对正则表达式的语法有一个整体的认识:

  • 点 (.): 等同于任何字符。

  • Caret (^): 相当于字符串的开头。 (^…)

  • 美元符号 ($): 相当于字符串的结尾。 (……美元)

  • |: 表达式 x| y,匹配 x 或 y。

  • \: 转义字符。

  • \.: 匹配点。 (.)

  • \\: 匹配反斜杠。 (\)

  • […]:声明一组字符。 ([A-Z-Z])

  • \d: 匹配数字。 ([0-9])

  • \D: 匹配非数字。

  • \s: 匹配空白字符。

  • \S: 匹配非空白字符。

  • \w: 匹配字母数字。

  • \W: 匹配非字母数字。

  • (…):分组正则表达式的模式。

  • \number: 按索引匹配上一组的文本。 (\1)

  • (?P…):匹配模式并存储在name参数中。

  • (?P=name): 匹配上一个组名匹配的所有文本。

  • (?:…):匹配一个模式,但不能捕获文本。

  • (?#...):评论(不考虑)。讲述图案的细节。

如果一个字符、字符集或组需要重复多次,则必须提供正则表达式模式的基数。

  • ? : 基数为 0... 1: 不强制的模式(问号)

  • - :基数为 0 或更多的模式,0..(星号)

  • + - :基数为 1 或更多的模式,1..(加号)

  • {n}:匹配 n 次重复的模式。

  • {a ,b}:匹配从 a 到 b 的模式重复。

  • [A-Za-z]+ :匹配多个字母字符。

功能文件中的步骤可能具有几乎相似的短语。 Behave具有解析能力。方法 use_step_parser 用于此,我们必须将解析器类型作为参数传递给该方法。

对于正则表达式匹配器,我们必须传递参数 re。参数 (? P...) 用于从步骤定义中获取参数。

特征文件(几乎类似的步骤)

类似步骤的特征文件如下:

Feature: Payment Process
Scenario: Check Debit transactions
        Given user is on "debit" screen
    Scenario: Check Credit transactions
        Given user is on "credit" screen

对应步骤实现文件

步骤实现文件如下:

from behave import *
#define parser type
use_step_matcher("re")
#regular expression parsing
@given('user is on "(?P<payment>.*)" screen')
def step_impl(context, payment):
    print("Screen type: ")
    print(payment)

运行特征文件后得到的输出如下。在这里,我们使用了命令 Behave --no-capture -f plain .

Regular Expressions

输出显示借方和贷方。这两个值已通过特征文件中几乎相似的步骤传递。在步骤实现中,我们已经用正则表达式解析了这两个步骤。