如何替换某些字符周围的空白?

lok*_*art 3 regex

我正在制作一些自由文本,因为我需要做一些数据清理,我有一个问题(很多,我稍后会问,我肯定):

我需要更换以下组合:

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

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

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

[; ] (标点符号后面只有空格)

...标点符号可以是其中之一[;:,.].我怎么能用正则表达式做到这一点?

Fel*_*ing 7

可能的表达方式是:

\s?([;:,.])\s?
Run Code Online (Sandbox Code Playgroud)

并且根据您正在使用的编程语言或工具,您必须使用$1,\\1或者\1用于反向引用,并且替换将是例如$1(后面有空格1).

说明:

\s?      - match at most one whitespace character
 (...)   - capture group, storing the matched characters in a reference
  [...]  - character class, matching one of the characters inside
Run Code Online (Sandbox Code Playgroud)

参考文献: 字符类,捕获组,量词

但同样:表达式可能会有所不同,具体取决于您使用的工具/语言.例如,类似的表达式sed看起来像:

/ *\([;:,.]\) */\1 /
Run Code Online (Sandbox Code Playgroud)

但这也会减少标点符号周围的空间(可能有更好的方法,但我不太熟悉sed).