如何创建匹配 0 次出现或 7 到 50 次出现的正则表达式?

How to create a regex that matches either 0 occurrences, or between 7 and 50 occurrences?

在正则表达式中,我可以用 * 匹配零个或多个匹配项,用 {7,50} 匹配 7 到 50 个匹配项。如何在 7 到 50 次之间匹配

将范围匹配分组并使其成为可选 ?(匹配 0 或 1 个实例)。

Python,因为未指定语言:

>>> import re
>>> test = 'abaxbaxxxxxxbaxxxxxxxbaxxxxxxxxb'
>>> re.findall('a(?:x{7,50})?b',test)
['ab', 'axxxxxxxb', 'axxxxxxxxb']
  • 匹配a.
  • (?:n) 匹配 n 但不捕获 group.grouping.
  • (?:x{7,50}) 组匹配 x.
  • 的 7-50 次出现
  • (?:x{7,50})? 使其可选(出现 0 次或 1 次)
  • 匹配b

没有非捕获组你会得到:

>>> re.findall('a(x{7,50})?b',test)
['', 'xxxxxxx', 'xxxxxxxx']

查看工作示例@https://regex101.com/r/qkziuu/1

你可以使用这个regex

(\S{7,50})?

\S{7,50} 表示非空白字符出现 7 到 50 次

(\S{7,50})? 表示出现 0 次或 1 次 \S{7,50}