正则表达式以删除字符和提供的单词

本文关键字:单词 删除 字符 正则表达式 | 更新日期: 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-?                        # 末尾可选破折号