Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab:通过插入当前匹配的部分,将字符串替换为regexprep_Regex_Matlab - Fatal编程技术网

Matlab:通过插入当前匹配的部分,将字符串替换为regexprep

Matlab:通过插入当前匹配的部分,将字符串替换为regexprep,regex,matlab,Regex,Matlab,我有一个字符串的格式: a='{header:header{length:3,number:two,month:april},holiday:summerholiday{holiday:france}}' 在这个字符串上,我想使用Matlab的jsondecode函数,因此我需要字符串的格式如下: a_desired='{“header”:{“length”:“3”,“number”:“two”,“month”:“april”},“holiday”:{“holiday”:“france”}' 我

我有一个字符串的格式:

a='{header:header{length:3,number:two,month:april},holiday:summerholiday{holiday:france}}'

在这个字符串上,我想使用Matlab的
jsondecode
函数,因此我需要字符串的格式如下:

a_desired='{“header”:{“length”:“3”,“number”:“two”,“month”:“april”},“holiday”:{“holiday”:“france”}'

我需要删除字符串中的每个单词,后面跟着
:word{
(作为标题和summerholiday)

我的想法是:

a = '{header:Header {length:3, number:two, month:april}, holiday : summerholiday: {holiday : france}}';
exp = '\w*:\w* {';
str_json = regexprep(a, exp, '$&' ); 
// nothing changes, because I insert the same string I want to replace

如何仅插入当前正则表达式的一部分,而不是插入当前匹配的输入文本的孔部分?

您可以通过两个步骤获得所需的输出

1.从字符串中删除不需要的单词。

a_desired=regexprep(a,,(:)\s?[a-zA-Z]*\s*({),$1$2')

正则表达式解释如下:

  • (:)
    匹配分号并捕获它

  • \s?[a-zA-Z]*
    可选地匹配一个空格,后跟一个单词

  • \s*
    匹配任何空白

  • ({)
    匹配一个左括号并将其捕获到第二组中

匹配的模式被第一个捕获组
$1
和第二个捕获组
$2
替换

2.用双引号将每个单词括起来。

a_desired=regexprep(a_desired,“(\w*)”,“$1”)

  • (\w*)
    匹配任何单词并捕获它
匹配的模式被捕获的组$1替换,该组用双引号字符括起来

最后的产出:


a_desired='{“header”:{“length”:“3”,“number”:“two”,“month”:“april”},“holiday”:{“holiday”:“france”}}

非常感谢!是否可以在下一个括号{?是否有更简单的方法:match=regexp(a),\w*(\w*?)(\s?)(\w*?)(\s?)(\w*?)(\s?)(\w*)(\s?)(\s?)(\w*)(\s?)(\s?)@米里,你可以使用<代码>(\W*.s)*/Case>来捕获该组贪婪的人。当原始问题得到解决时,请回答我,并考虑如果你发现它有用的话,请进行投票。抱歉,这是我最后一个问题:作为我1小时前的问题的扩展:如果我想找到与字符串之间的空洞内容匹配的话。description“和一个括号{,但在这两个标记之间,不仅有未知的单词,还有符号/;。(,还有使用regexp的解决方案吗?不用担心。你能分享这种情况下的预期输入和输出吗?更容易理解你的意思:)。这是我的输入:
a=testphase:{comand:{inputcheck:““,num:2000,详细信息:已达到开始阶段,初始}
b=testphase:{comand:{inputcheck:”,num:2000,详细信息:已达到开始阶段(加载包)}
a_desired=“testphase”:{“comand”:{“inputcheck:”,“num”:“2000”,“详细信息”:“已达到开始阶段,初始”}
b:desired=“testphase”:{“comand”:{“inputcheck”:“num”:“2000”,“details”:“已达到开始阶段(加载包)”}
我无法正确地将内容分组到“details”之后,以便按需要将“”设置为结尾。感谢您的帮助:)