来自名称的正则表达式特定词[关闭]

Posted

技术标签:

【中文标题】来自名称的正则表达式特定词[关闭]【英文标题】:REGEX specific word from Name [closed] 【发布时间】:2021-07-10 02:25:45 【问题描述】:

我正在尝试找出格式错误的名称的正则表达式,例如,用户在名称中输入的名称和关系作为一个值

[Son of Joseph Joestar ] => s/o. Joseph Joestar

问题是由于没有验证,用户输入了不同的变体,例如

s/o、s/、s/约瑟夫...等

这是到目前为止我得到的

^(s\/o.)(S\/o.)(s\/o)(S\/o)(s\/)(S\/)\w+
    关系在开头或开头,然后是名称 还有 3 个案例女儿(D/o.)、妻子(W/o.)、父亲(F/o.)

我想知道对应的正则表达式来过滤掉关系前缀

提前致谢

【问题讨论】:

你有什么问题? 【参考方案1】:

也许从类似的东西开始

string foo = "s/o. Joseph Joestar";

// Look (and capture) for SDWF followed by "/" and 
// EITHER "o" and maybe "." and maybe a white space
// OR we look ahead (?=  ) and see a Upper wordchar followeed by lower word chars.
//   look ahead because we do not want to have anything to do with this when replacing
string bar = Regex.Replace(foo, @"^([sSdDwWfF])/(o\.?\s?|(?=[A-Z]\w+))", match =>

    string relation = match.Groups[1].Value.ToUpper() switch
    
        "S" => "Son of",
        "D" => "Daughter of",
        "F" => "Father of",
        "W" => "Wife of",
        _ => throw new Exception("Oops")
    ;
    return $"relation ";
);

【讨论】:

以上是关于来自名称的正则表达式特定词[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式从响应中获取特定字符串[关闭]

特定标签及其内容的正则表达式,按标签名称分组

正则表达式:去除Unicode

正则表达式:去除Unicode

如何编码以防止此错误消息来自正则表达式并通过单击关闭按钮随时关闭该表单?

vim怎么正则查询一个词出现的次数