我试图想出一个正则表达式,可以用空格分隔括号内的所有破折号。我想出了以下几点:
regexprep(input, '(\w| +)-(\w+)(?=.*\))', '$1 - $2');
但是,当运行字符串 (this-is-a-bigger-test)
时,我获得结果 (this - is-a - Bigger-test)
而不是预期的(这是一个更大的测试)
。
我在这个正则表达式的分组中缺少什么?
最佳答案
我认为这符合你的要求:
str_out = regexprep(str_in, '(?<=\(.*)-(?=.*\))', ' - ');
它将 (
之后和 )
之前的任何 -
替换为 -
。
如noted by @stribizhev ,如果破折号的每一侧可能已经有一个或多个空格,并且您希望每个破折号的每一侧都只有一个空格,请使用
str_out = regexprep(str_in, '(?<=\(.*)\s*-\s*(?=.*\))', ' - ');
关于regex - 替换括号内的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28865732/