我正在制作一些自由文本,因为我需要做一些数据清理,我有一个问题(很多,我稍后会问,我肯定):
我需要更换以下组合:
[ ; ] (标点符号前后的空格)
[;] (标点符号前后没有空格)
[ ;] (标点符号前只有空格)
至
[; ] (标点符号后面只有空格)
...标点符号可以是其中之一[;:,.].我怎么能用正则表达式做到这一点?
可能的表达方式是:
\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).