我对使用regexp并不十分自信,但我的最终目标是删除除@
和#
之外的所有符号。
我现在拥有的是 [\\p{P}\\d]
。
它工作正常但它也删除了我需要保留的@
和#
。
以下是示例输入字符串:
^Hello, my #friend @Даниил%% 中英 字 典!!.
我想改成
Hello my #friend @Даниил 中英 字 典
答案 0 :(得分:2)
捕获您需要保留的符号并替换为$1
反向引用,以在结果字符串中恢复捕获的部分:
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)
}
请参阅this Go demo打印Hello my #friend @Даниил 中英 字 典
。
请注意,^
不属于\p{P}
类别,因此我添加了\p{S}
一个。
模式为([#@])|[\p{P}\p{S}\d]
,请参阅its online demo。
<强>详情:
([#@])
- 从$1
或${1}
#
/ @
)
|
- 或[\p{P}\p{S}\d]
- 标点符号,符号或数字字符。