如何使用sprintf创建一个RegExp来匹配文本文件中的1个但不超过N个连续单词?

如何使用sprintf创建一个RegExp来匹配文本文件中的1个但不超过N个连续单词?,regex,matlab,printf,Regex,Matlab,Printf,将一个单词定义为包含任意数量字符的连续序列 字母字符或撇号后跟0个或更多空格。(0,因为字符串中的最后一个单词后面不会有空格)。 这是我正在使用的正则表达式,但我无法使其工作: str = sprintf('[a-zA-Z_](0|\s){1,N}','text.txt'); 不能用“零或更多”空格分隔单词。除非有一个特定的字符将它们分开,否则无法知道一个单词是否结束 编辑:OP在评论中明确表示他们需要“一个或多个空格”或文字字符0来分隔单词 以下内容适用于1个或多个空间。请注意,需要使用双引

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

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

不能用“零或更多”空格分隔单词。除非有一个特定的字符将它们分开,否则无法知道一个单词是否结束

编辑:OP在评论中明确表示他们需要“一个或多个空格”或文字字符
0
来分隔单词

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

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

现场安装。我也会这么做的。顺便说一句,这是昨天有人写的家庭作业问题。。。给我通风报信的是
0或更多空格
问题的一部分。。。这完全没有道理。这可能意味着
aaa
将被归类为三个词。我要求澄清此事,但OP在他们回答之前删除了这个问题。很好的解释!方括号开头的单引号是否可能在括号外/去掉(即与“sprintf”一起使用)?@Benoit_11-是的,你是对的。单引号必须是双引号,否则MATLAB会认为您试图结束字符串。@Egenchris-我相信输入到
regexp
的字符串应该是:
'[''a-zA-Z]+\s+{1,N}'
@Benoit\u 11您是对的。谢谢你的更正。