【问题标题】:Regex Validation for Dialog Flow Entity name对话流实体名称的正则表达式验证
【发布时间】:2019-01-22 18:00:49
【问题描述】:

我正在尝试编写正则表达式来验证可用作实体名称的名称。

标准:实体名称只能包含以下内容:A-Z、a-z、0-9、_(下划线)、-(破折号)。它应该以字母开头。

这是我的 Python 代码(不正确)

import re
from random import randint

entityName = 'Enity Demo-trial'

if re.search(r"^[a-zA-Z][[_|a-zA-Z|0-9|-]*]+",entityName):

    print("Validation failed")

else:

    print("Validation satisfied")

【问题讨论】:

  • 对于字符串Enity Demo-trial,是否要匹配Enity,因此打印验证失败?
  • 如果你问我,条件语句的选择很糟糕,把它们放在另一个地方会更有意义:P
  • 任何答案对你有用吗?

标签: regex python-3.x dialogflow-es


【解决方案1】:

[a-zA-Z][\w\-]* 将为您工作。

您不需要在字符类中包含所有这些 OR 运算符“|”。

【讨论】:

  • 无需在字符集末尾转义-
  • @WiktorStribiżew 也许我把它与 C# 的 Regex.IsMatch 混淆了?我可以发誓re.match 是那个的python 版本。
  • 我的错误,似乎 re.match 也返回了一个匹配对象,但匹配对象总是被认为是真实的。
【解决方案2】:

你可以使用:

if re.search(r"(?i)^[a-z][a-z\d_-]*$", subject):
    print("Validation satisfied")
else:
    print("Validation failed")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    相关资源
    最近更新 更多