Python正则表达式:如何使一组单词/字符可选?

时间:2017-12-07 05:42:36

标签: python regex

我正在尝试制作可以匹配所有这些的正则表达式:

  • 字连字符
  • 字连字符再次

-\w+可能很多取决于术语中的单词。如何使其成为可选

到目前为止我所做的事情在这里给出: - https://regex101.com/r/Atpwze/1

2 个答案:

答案 0 :(得分:0)

尝试使用

  1. \w+(-\w+)*用于匹配第一个单词
  2. 后的0个或多个带连字符的单词
  3. \w+(-\w+){0,}与第一种情况相同
  4. 根据您的具体要求。

    为了消除某些极端情况,例如a-+-+---,您可以使用\w+(-\w+)*[^\W]

    • \W匹配所有非单词字符,^\W否定非单词字符的匹配

答案 1 :(得分:0)

要了解所有示例,我认为您可以使用:

^\w+(?:\w+\-?|\-\w+)+$

  • 字符串^
  • 的开头
  • 匹配单词字符一次或多次\w+
  • 启动非捕获组(?:
  • 将单词字符与可选的连字符\w+\-?
  • 匹配一次或多次
  • |
  • 带有一个或多个单词字符\-\w+
  • 的连字符
  • 关闭非捕获组)
  • 字符串$
  • 的结尾