正则表达式替换除#以外的所有符号和@
问题描述:
我对使用正则表达式不是很有信心,但我的最终目标是让东西移除除@
和#
之外的所有符号。正则表达式替换除#以外的所有符号和@
我现在拥有的是[\\p{P}\\d]
。 它工作正常,但它也删除我需要保留的@
和#
。
这里是样本输入字符串:
^Hello, my #friend @Даниил%% 中英 字 典!!.
,我试图改变成
Hello my #friend @Даниил 中英 字 典
答
捕捉你需要保持与$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
/${1}
) - 或 -
[\p{P}\p{S}\d]
- 一个标点符号,符号或数字字符。
非常感谢!这正是我所期待的。 –