我正在使用Visual Studios 2013在C#中开发示例程序。我有一些逻辑可以找到全部大写的缩写,如下所示:
string docStr = "Made at Training And Doctrine (TAD)";
string allUpperRegStr = "\\([A-Z]{2,}\\)";
Match mUpper = Regex.Match(docStr, allUpperRegStr);
If (mUpper.Success)
{
string remWS = mUpper.Value.Trim();
}
所以上面的逻辑找到了(TAD)的首字母缩写词,我需要的是解析句子的方法,并找到匹配的首字母缩略词的定义,即Training和Doctrine。任何帮助将不胜感激。
答案 0 :(得分:3)
你应该构建一个类似(T[a-z]+\sA[a-z]+\sD[a-z])
的新正则表达式,并且应该能够捕获“Training and Doctrine”。您可能必须考虑定义包含标点字符或其他变体(例如多个空格)的情况,并可能相应地调整正则表达式字符串。
编辑:完整解决方案 - EDIT2:忽略大小写(这未经验证无法正常工作 )
string docStr = "Made at Training And Doctrine (TAD)";
string allUpperRegStr = "\\([A-Z]{2,}\\)";
Match mUpper = Regex.Match(docStr, allUpperRegStr);
if (mUpper.Success)
{
string remWS = mUpper.Value.Trim();
char [] chars = remWS.toCharArray();
IEnumerable<string> lowerUpper = from l in chars
where l !='(' && l != ')'
select string.Format("[{0}{1}][a-z]+", Char.ToLower(l), Char.ToUpper(l));
string regex2 = string.Format("({0})", string.Join("\\s", lowerUpper));
Match mDefinition = Regex.Match(docStr, regex2);
if (mDefinition.Success)
{
string definition = mDefinition.Value.Trim();
}
}
最新修复包括:
[a-z]
)lowerUpper
答案 1 :(得分:-2)
直接使用单词作为你的正则表达式,例如\ Training和Doctrine \ 正则表达式解析器将基于字符串识别模式。