我有一个表单字段,其中大多数字段只包含内联排序列表:
1. This item may be contain characters, symbols or numbers. 2. And this item also...
以下代码不适用于用户输入验证(用户只能输入内联排序列表):
definiton_re = re.compile(r'^(?:\d\.\s(?:.+?))+$')
validate_definiton = RegexValidator(definiton_re, _("Enter a valid 'definition' in format: 1. meaning #1, 2. meaning #2...etc"), 'invalid')
注意:这里我使用Django框架中的RegexValidator类来验证表单字段值
这是我的解决办法。效果不错
Nice solution from OP.为了更进一步,让我们做一些正则表达式优化/打高尔夫球
以下是最新消息:
(?:^|\s)
与交替之间的回溯匹配。这里我们使用(?<!\S)
来声明我们没有在非空白字符前面李>\d{1,2}\.\s
不必位于非捕获组中李>(.+?)(?=(?:, \d{1,2}\.)|$)
太大了。我们将此位更改为:(
捕获组(?:
(?!
消极前瞻:断言我们的立场是而不是:,\s\d{1,2}\.
逗号、空格字符,然后是列表索引李>)
,?[^,]*
以下是有趣的优化:*
量词对其进行滚动,并且没有回溯李>)+
继续重复该组,直到负前瞻断言失败李>)
你可以用它来代替the other answer中的正则表达式,这里是一个regex demo
不过,乍一看,在解析时使用
re.split()
可以更好地解决这个问题:这是一个online code demo
不幸的是,对于验证,您必须遵循正则表达式匹配方法,只需在楼上编译正则表达式:
相关问题 更多 >
编程相关推荐