查找句子中的缩写词的定义

时间:2015-05-27 21:51:47

标签: c# regex string parsing

我正在使用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。任何帮助将不胜感激。

2 个答案:

答案 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();
    }
}

最新修复包括:

  1. 修复目标正则表达式字符串(最后一个字符也必须跟[a-z]
  2. lowerUpper
  3. 剥离'('&amp;')''
  4. Working regex sample

答案 1 :(得分:-2)

直接使用单词作为你的正则表达式,例如\ Training和Doctrine \ 正则表达式解析器将基于字符串识别模式。