Python Regex匹配多种格式

时间:2017-09-10 11:38:43

标签: regex python-3.x

我试图在句子中匹配一些标准。我可以想出一个正则表达式模式,但不幸的是,虽然有些匹配,但仍然没有正确匹配其他人。 在一个句子中,我需要保留字母数字字符串,同时保持那些字符串中间有“ - ”和“'”撇号。实施例

  • 你好
  • 你好世界
  • 年度

我的正则表达式是:(?=\S*|['-])([a-zA-Z0-9'-]+)

目前上面的正则表达式匹配“---”(不应该是正确的)但不匹配“年份”

谢谢

2 个答案:

答案 0 :(得分:0)

你可以使用正则表达式

^(?=\S*[-'])(?!\S*[-']{2,})([-a-zA-Z0-9']+)$

请参阅regex101 demo。它确保字符串至少有1 [ - ']并且它们不是连续的

答案 1 :(得分:0)

我认为你在寻找:

[a-zA-Z0-9]+(?:[-'][a-zA-Z0-9]+)*

请注意(?=\S*|['-])是一个始终正确的断言,因为\S*匹配空字符串。