gsub 字符串中的特定模式和位置
gsub specific pattern and position in character string
这可能是一个相当简单的修复程序,但我对 RegExpr 的使用并不理想,因此不胜感激。我已经看过其他地方,没有任何东西适合我。
我正在尝试标准化一些大学学位的名称。我需要以下格式:
学位代码 - 专业名称
EG - “BA - Computer Stuff”
IE 一个单词,单个 space,破折号,单个 space,单词。
它无法识别破折号一侧或两侧的多个 space,如果看不到 space,它会将破折号两侧的字母替换为小写字母 s ,我认为 \s 或 \s 白色 space 并且它会替代。
这一点格式修复是更大的 mutate 语句的一部分,IE 中的单行括号和其他地方的 ve 示例对我不起作用。
我有示例数据:
data <- data.frame( var = c("BA-English" , "BA - English" , "BA - Chemistry" , "BS - Rubber Chickens") )
var %>%
mutate(var = gsub("\w\S-\S\w", "\w\s-\s\w", var) ) -> var_fix )
非常感谢任何帮助。谢谢
您可以使用
gsub("\s*-\s*", " - ", var)
## Or, if the hyphen is in between word chars
gsub("\b\s*-\s*\b", " - ", var)
参见regex demo #1 and regex demo #2。
详情:
\b
- 单词边界
\s*
- 零个或多个空格
-
- 一个连字符
注意:如果你想标准化连字符,你也可以考虑使用gsub("(*UCP)\s*[\p{Pd}\x{00AD}\x{2212}]\s*", " - ", var, perl=TRUE)
/ gsub("(*UCP)\b\s*[\p{Pd}\x{00AD}\x{2212}]\s*\b", " - ", var, perl=TRUE)
,其中(*UCP)
使得单词边界和空格模式 Unicode 识别,\p{Pd}
匹配任何 Unicode 破折号,\x{00AD}
匹配软连字符,\x{2212}
匹配减号。
这可能是一个相当简单的修复程序,但我对 RegExpr 的使用并不理想,因此不胜感激。我已经看过其他地方,没有任何东西适合我。
我正在尝试标准化一些大学学位的名称。我需要以下格式:
学位代码 - 专业名称 EG - “BA - Computer Stuff”
IE 一个单词,单个 space,破折号,单个 space,单词。
它无法识别破折号一侧或两侧的多个 space,如果看不到 space,它会将破折号两侧的字母替换为小写字母 s ,我认为 \s 或 \s 白色 space 并且它会替代。
这一点格式修复是更大的 mutate 语句的一部分,IE 中的单行括号和其他地方的 ve 示例对我不起作用。
我有示例数据:
data <- data.frame( var = c("BA-English" , "BA - English" , "BA - Chemistry" , "BS - Rubber Chickens") )
var %>%
mutate(var = gsub("\w\S-\S\w", "\w\s-\s\w", var) ) -> var_fix )
非常感谢任何帮助。谢谢
您可以使用
gsub("\s*-\s*", " - ", var)
## Or, if the hyphen is in between word chars
gsub("\b\s*-\s*\b", " - ", var)
参见regex demo #1 and regex demo #2。
详情:
\b
- 单词边界\s*
- 零个或多个空格-
- 一个连字符
注意:如果你想标准化连字符,你也可以考虑使用gsub("(*UCP)\s*[\p{Pd}\x{00AD}\x{2212}]\s*", " - ", var, perl=TRUE)
/ gsub("(*UCP)\b\s*[\p{Pd}\x{00AD}\x{2212}]\s*\b", " - ", var, perl=TRUE)
,其中(*UCP)
使得单词边界和空格模式 Unicode 识别,\p{Pd}
匹配任何 Unicode 破折号,\x{00AD}
匹配软连字符,\x{2212}
匹配减号。