我正在尝试提出一个正则表达式,可以将括号内的所有破折号空间分隔开来。我想出了以下内容:
regexprep(input, '(\w| +)-(\w+)(?=.*\))', '$1 - $2');
但是,在运行字符串(this-is-a-bigger-test)
时,我会获得结果(this - is-a - bigger-test)
而不是预期的(this - is - a - bigger - test)
。
我在这个正则表达式的分组中缺少什么?
答案 0 :(得分:2)
我认为这可以满足您的需求:
str_out = regexprep(str_in, '(?<=\(.*)-(?=.*\))', ' - ');
它取代-
之后(
之前)
之前的任何-
。
作为noted by @stribizhev,如果短划线可能已经在每一侧都有一个或多个空格,并且您希望每个短划线在每一侧只有一个空格,请使用
str_out = regexprep(str_in, '(?<=\(.*)\s*-\s*(?=.*\))', ' - ');