如何使用sprintf创建一个RegExp来匹配文本文件中的1个但不超过N个连续单词?
将一个单词定义为包含任意数量字符的连续序列 字母字符或撇号后跟0个或更多空格。(0,因为字符串中的最后一个单词后面不会有空格)。如何使用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个或多个空间。请注意,需要使用双引
这是我正在使用的正则表达式,但我无法使其工作:
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您是对的。谢谢你的更正。