regex - 替换括号内的字符

标签 regex matlab

我试图想出一个正则表达式,可以用空格分隔括号内的所有破折号。我想出了以下几点:

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/

相关文章:

matlab - 是否有可能在 Matlab 中获得任意方程的多个解?

matlab - 如何设置 Matlab 不使用或始终使用区域数字格式?

Javascript 正则表达式 - 匹配句子中的单词与 "+"字符

python - 正则表达式以匹配 YAML 中的键

Python正则表达式解析并放入多维列表

matlab - matlab中的贝叶斯分类

matlab - 如何删除元素总和为零的数组维度?

php - 有没有一种快速的方法可以为所有 CSS 类和 ID 添加前缀?

c# - 在 C# 中使用正则表达式的重复模式

matlab - 如何将从基本矩阵获得的相机姿态(转换矩阵)转换为世界坐标系