如何使用MATLAB regexp精准匹配时长片段并提取其前字符串
MATLAB中精准提取时长前字符串的正则表达式方案
针对你的需求,我们可以通过精准匹配时长格式的正则表达式避开函数名含数字的干扰,直接定位到“xx minutes, yy seconds”片段,再提取其前面的内容。
方法一:使用捕获组直接提取
构建匹配规则,捕获时长片段之前的所有内容,代码示例:
str = "How to Do FFT in MATLAB YouTube MATLAB 4 minutes, 42 seconds Apr 28, 2022"; % 正则表达式:非贪婪匹配开头到时长前的内容,精准匹配时长格式 result = regexp(str, '^(.*?)\s+\d+ minutes, \d+ seconds', 'tokens'); % 提取结果 if ~isempty(result) extracted_content = result{1}{1}; disp(extracted_content); % 输出:How to Do FFT in MATLAB YouTube MATLAB end
^(.*?):非贪婪模式匹配从字符串开头到时长片段前的所有内容,避免过度匹配\s+:匹配时长片段前的一个或多个空格\d+:匹配1个及以上数字,对应时长里的xx和yy'tokens'参数:让regexp返回捕获到的内容组
方法二:定位时长位置后截取
先找到时长片段的起始位置,再截取前面的内容,代码示例:
str = "How to Do FFT in MATLAB YouTube MATLAB 4 minutes, 42 seconds Apr 28, 2022"; % 获取时长片段的起始索引 match_start = regexp(str, '\d+ minutes, \d+ seconds', 'start'); if ~isempty(match_start) % 截取到起始位置前的空格处 extracted_content = str(1:match_start(1)-2); disp(extracted_content); % 输出:How to Do FFT in MATLAB YouTube MATLAB end
两种方法都能精准避开函数名中的数字,只匹配符合格式的时长片段,从而正确提取目标内容。
内容的提问来源于stack exchange,提问作者Srikanth Kapali
相关产品推荐
相关产品推荐

