首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何替换某些字符周围的空格?

问如何替换某些字符周围的空格?
EN

Stack Overflow用户
提问于 2011-01-21 11:49:49
回答 3查看 3.7K关注 0票数 3

我正在写一些免费的文本,我需要做一些数据清理,我有一个问题(在许多问题中,我相信稍后我会问):

我需要替换以下组合:

[ ; ] (标点符号前后的空格)

[;] (标点符号前后没有空格)

[ ;] (仅限标点符号前的空格)

至

[; ] (仅在标点符号后有空格)

...where标点符号可以是[;:,.]中的一个。如何使用正则表达式完成此操作?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-21 11:52:50

一种可能的表达式是:

代码语言:javascript
复制
\s?([;:,.])\s?

根据您使用的编程语言或工具,您必须使用$1、\\1或\1作为反向引用,替代方法可能是$1 (在1之后有一个空格)。

说明:

代码语言:javascript
复制
\s?      - match at most one whitespace character
 (...)   - capture group, storing the matched characters in a reference
  [...]  - character class, matching one of the characters inside

参考: character class、capture group、quantifier

但同样:表达式可能会有所不同,这取决于您使用的工具/语言。例如,sed的类似表达式将如下所示:

代码语言:javascript
复制
/ *\([;:,.]\) */\1 /

但这也会减少标点符号周围的空格(可能还有更好的方法,但我对sed不是很熟悉)。

票数 7
EN

Stack Overflow用户

发布于 2011-01-21 15:49:44

我会使用\s*([;:,.])\s*并替换为'$1 ' (添加单引号以强调反向引用后的空格。这是Felix的第一个和最后一个建议的交叉,所以它可以清理多个空格,包括制表符和换行符。

票数 2
EN

Stack Overflow用户

发布于 2011-01-21 11:57:37

这取决于您使用哪种语言将其移动到清理后的表单[; ]中,但是您可以通过将标点符号括在[]中来匹配它们,比如[;:,.]。

一旦你完成了你的模式,你就可以用你的干净版本替换匹配的内容。至少在Java语言中,您可以将其替换为类似"\[$<GroupNumber> \]"的内容,<GroupNumber>根据组的顺序,使用您的标点符号引用带括号的组,如1、2、3等。

请记住,根据您使用的语言,您可能需要转义反斜杠。如果您使用的是Java,那么对于上面的所有示例,您需要使用\\来代替\。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4755186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档