正则表达式以删除字符和提供的单词
本文关键字:单词 删除 字符 正则表达式 | 更新日期: 2023-09-27 18:36:12
我需要一个正则表达式,它只允许字母数字字符并删除某些完整单词。
例:
输入字符串:这是约翰尼布拉沃的祖父
结果字符串:约翰尼-布拉佛斯-爸爸
要用空字符串替换的单词/字符:this,is,',grand
这是我到目前为止所拥有的:
var input = "this-is-johny-bravo's-grand-dad";
var regex = new Regex(@"([^a-z0-9'-]['b(this|is|grand)'b]?)");
var result = regex.Replace(input, "");
结果似乎没有撇号,但不幸的是仍然包括被拒绝的全词。
您还需要将字符类添加到交替:
new Regex(@"'b(this|is|grand)'b-?|[^a-z0-9-]");
你的表情太复杂了。尝试
''b(this|is|grand|')''b-?
另外,这是问题的根本原因:字符类不用于交替。此['b(this|is|grand)'b]
在语法上等效于此[()adghinrst|]
。
仔细想想,你可能想要这个:
(''b(this|is|grand)''b|[^a-z0-9-])-?
细分:
( # 组 1 ''b(this|is|grand)''b # 这些单词中的任何一个 | # 或 [^a-z0-9-] # 除其中之一之外的任何字符) # 结束组 1-? # 末尾可选破折号