我正在try 匹配"3天后"或"1个月后"形式的句子片段.我想特别对待单数和复数形式,所以"1天"有效,但"1天"无效.
我有下面的代码,它几乎就在那里,但失败测试中的前两个条目不会失败.如果可能的话,请按照我的意愿使用语法符号来避免使用set_parse_action()来判断数字值与单位的复数.
from pyparsing import *
units = Keyword('days') ^ Keyword('months')
unit = Keyword('day') ^ Keyword('month')
single = Literal('1') + unit
multi = Word(nums) + units
after = Keyword('after') + ( single ^ multi )
a = after.run_tests('''
after 1 day
after 2 days
after 1 month
after 2 months
''')
print('=============')
b = after.run_tests('''
after 1 days
after 2 day
after 1day
after 2days
''', failure_tests = True)
print('Success tests', 'passed' if a[0] else 'failed')
print('Failure tests', 'passed' if b[0] else 'failed')