来自名称的正则表达式特定词[关闭]
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 ";
);
【讨论】:
以上是关于来自名称的正则表达式特定词[关闭]的主要内容,如果未能解决你的问题,请参考以下文章