I am not super confident with using regexp, but my end goal is to have something that is removing all symbols excluding @
and #
.
What I have now is [\\p{P}\\d]
. It works fine but it also removes @
and #
which I need to keep.
Here is the sample input string:
^Hello, my #friend @Даниил%% 中英 字 典!!.
that I am trying to change into
Hello my #friend @Даниил 中英 字 典
Capture the symbols you need to keep and replace with $1
backreference to restore the captured part in the resulting string:
package main
import (
"fmt"
"regexp"
)
func main() {
s := "^Hello, my #friend @Даниил%% 中英 字 典!!."
re := regexp.MustCompile(`([#@])|[\p{P}\p{S}\d]`)
s = re.ReplaceAllString(s, "$1")
fmt.Println(s)
}
See this Go demo printing Hello my #friend @Даниил 中英 字 典
.
Note that ^
does not belong to the \p{P}
category, thus, I added \p{S}
one.
The pattern is ([#@])|[\p{P}\p{S}\d]
, see its online demo.
Details:
([#@])
- Capturing group 1 (referred to with $1
/ ${1}
from the replacement pattern) matching a #
or @
|
- or[\p{P}\p{S}\d]
- a punctuation, symbol or digit char.