regex - 在主字符串中提取随机选择的字符串:MATLAB
问题描述
我正在使用的字符串类似于下面写的字符串:
String_1='{2,2,1,1,{1,1,2,2,{1,2,{1,1,1,1,1}},2,2},{1,2,{1,2,2,2,2,2},2},{1,1},2,2,2,2,1,1,1,1,1}';
首先,我必须随机选择字符串中的一个数字。之后,我必须将所选数字中的字符串提取到第一个}
并用它创建另一个字符串(参见图A)。注意,我们只从左边移动到右边。
但是,如果所选数字中有n
左括号,我们必须跳过n
右括号才能找到我们正在寻找的右括号,如图B所示。
如果您有任何意见或建议,请告诉我。谢谢你。
解决方案
首先,找到 和 的位置,1
得到2
一个随机位置。
inds = find(String_1 == '1' | String_1 == '2');
random_number_pos = inds(randi(length(inds)));
现在,我们可以使用堆栈的概念来找到第一个}
没有打开的。
parentheses_opened = 0;
start_ind = random_number_pos + 2; end_ind = 0;
for ind = (random_number_pos + 2):length(String_1)
if(String_1(ind) == '}' && parentheses_opened == 0)
end_ind = ind - 1;
break;
elseif(String_1(ind) == '{')
parentheses_opened = parentheses_opened + 1;
elseif(String_1(ind) == '}')
parentheses_opened = parentheses_opened - 1;
end
end
String_2 = String_1(start_ind:end_ind);
String_1((start_ind - 1):(end_ind + 1)) = [];
推荐阅读
- asp.net-core - 带有总和的 EF Core 5
- mongodb - 您可以通过 MongoDB ODBC 驱动程序更新/插入/删除吗?
- reactjs - 如何从使用效果中只更新一项功能
- amazon-web-services - 如何配置 Appsync 以从 HTTP 端点检索数据以填充列表?
- c# - 如何处理 RichTextBlock 中的内联超链接的右键单击
- javascript - 如何清理这个 useEffect 钩子
- javascript - 如何通过在单击按钮时覆盖已打开的选项卡来打开新选项卡?
- amazon-web-services - 如何在 AWS 上启动 Snakemake 工作流程并分离?
- python - 如何在 OWL 中获取文字标签值?
- prolog - 由于空间不足而无法打印资源异常-SWI-prolog