如何使用 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
匹配 a
或 b
{1,N}
捕获 1 到 N 次之间的任意数字
将单词定义为包含任意数量的连续序列
字母字符或撇号后跟 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
匹配a
或b
{1,N}
捕获 1 到 N 次之间的任意数字