将单词定义为包含任意数量的连续序列
字母字符或撇号后跟 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 次之间的任意数字
关于regex - 如何使用 sprintf 创建一个正则表达式来匹配文本文件中的 1 个但不超过 N 个连续单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28440270/