r - 如何删除前导和结束分号和空格
问题描述
我想通过 gsubbing 在 data.frame 中替换所有分号。
为此,我使用了这个正则表达式:
(^[;\\s]+)|([;\\s]+$)
gsub("(^[;\\s]+)|([;\\s]+$)", "", x)
原则上它可以工作,但它也匹配前导“s”字符。IE“对称”变成“对称”。
> gsub("(^[;\\s]+)|([;\\s]+$)", "", "Symmetrisch")
[1] "Symmetrisch"
> gsub("(^[;\\s]+)|([;\\s]+$)", "", "symmetrisch")
[1] "ymmetrisch"
这里的表达有什么问题?
解决方案
该[;\\s]
模式与空格不匹配,因为您使用的是默认的 TRE 正则表达式风格,并且 TRE 中括号表达式内的反斜杠与文字反斜杠匹配。
有两种解决方案。如果替换\s
为[:space:]
(匹配任何空格)或[:blank:]
(仅匹配水平空格)POSIX 字符类,您仍然可以使用 TRE 正则表达式引擎:
gsub("^[;[:space:]]+|[;[:space:]]+$", "", "symmetrisch")
您还可以切换到 PCRE 引擎:
gsub("^[;\\s]+|[;\\s]+$", "", "symmetrisch", perl=TRUE)
在线查看R 演示。两条代码行都输出[1] "symmetrisch"
.
注意:括号在您的正则表达式中是多余的,因此我删除了它们。
推荐阅读
- dart - Flutter:使用不同的数据和返回按钮刷新同一屏幕
- excel - ActiveX 文本框将日期显示为数字
- python - Python Sys获取异常行号
- c# - 在 ASP.Net (Visual Studio 2013) 中以结构格式解析 Json 数据
- bash - linux命令行单引号转义问题
- r - 传单 R 中具有不同形状和颜色的自定义标记
- android - Android 上带有图像的 FCM 通知
- jmeter - 在 Jmeter 中使用 JsonExtractor 值
- react-native - 怎么设置全屏
何时嵌入 youtube 网址? - java - React to console inputs (commands) - how to handle multiple options most efficient?