如何使用 sprintf 创建正则表达式以匹配文本文件中 1 个但不超过 N 个连续单词?

How do I create a RegExp to match 1 but no more than N consecutive words in a text file using sprintf?

将单词定义为包含任意数量的连续序列 字母字符或撇号后跟 0 个或多个空格 space。 (0,因为字符串中的最后一个单词后面不会跟空格 space)。
这是我正在使用的正则表达式,但我无法让它工作:

str = sprintf('[a-zA-Z_](0|\s){1,N}','text.txt');

不能用 "zero or more" 空格分隔单词。除非有特定字符分隔,否则无法知道单词是否结束。

编辑:OP 在评论中澄清他们想要 "one or more spaces" 或文字字符 0 来分隔单词。

以下内容适用于 1 个或多个空格。请注意,需要双引号来表示 MATLAB 字符串中的 ' 字符。

([''a-zA-Z_]+(0|\s+)){1,N}
  • [''a-zA-Z_]+ 匹配一个或多个被认为是词的一部分的字符
  • 0 匹配文字字符 0
  • \s+ 匹配一个或多个空白字符
  • ( ... ) 将内容视为一个组
  • a|b 匹配 ab
  • {1,N} 捕获 1 到 N 次之间的任意数字