替换括号内的字符

时间:2015-03-04 21:51:30

标签: regex matlab

我正在尝试提出一个正则表达式,可以将括号内的所有破折号空间分隔开来。我想出了以下内容:

regexprep(input, '(\w| +)-(\w+)(?=.*\))', '$1 - $2');  

但是,在运行字符串(this-is-a-bigger-test)时,我会获得结果(this - is-a - bigger-test)而不是预期的(this - is - a - bigger - test)

我在这个正则表达式的分组中缺少什么?

1 个答案:

答案 0 :(得分:2)

我认为这可以满足您的需求:

str_out = regexprep(str_in, '(?<=\(.*)-(?=.*\))', ' - ');

它取代-之后(之前)之前的任何-

作为noted by @stribizhev,如果短划线可能已经在每一侧都有一个或多个空格,并且您希望每个短划线在每一侧只有一个空格,请使用

str_out = regexprep(str_in, '(?<=\(.*)\s*-\s*(?=.*\))', ' - ');