此表达式的正则表达式或如何拆分此表达式

时间:2014-09-27 20:07:28

标签: c# .net regex

我的表达可以是任何一个

1. BA11201 | (BA11201 && BA11231  || BA11231 & BA11231) & BA11231 || (BA11201 && BA11231  || BA11231 & BA11231) & ARM
2. BA11201 | (BA11201 && (BA11231 & BA11231)) & BA11231 || (BA11201 && BA11231  || BA11231 & BA11231) & ARM
我想分开吗?我如何编写正则表达式表达式来拆分它们?还是c#代码?

我需要像

  1. BA11201
    |
    ( BA11201
    &安培;&安培;
    (BA11231& BA11231)

    &安培;
    BA11231
    ||
    (BA11201&& BA11231 || BA11231& BA11231)
    &安培;
    ARM
  2. 这是代码用于第一个语句,但如何为第二个语句执行?

    private static bool CombineSubConditions(ref IEnumerable<string> conditionArray)
        {
            List<string> tempConditionArray = conditionArray.ToList();
            int startIndex=tempConditionArray.IndexOf("(");
            int endIndex=0;
            if (startIndex != -1)
            {
                endIndex=tempConditionArray.IndexOf(")");
                if (endIndex != -1)
                {
                    tempConditionArray.RemoveAt(startIndex);
                    endIndex = endIndex - 1;
                    tempConditionArray.RemoveAt(endIndex);
                    endIndex = endIndex - 1;
                    for (int i = startIndex; i < endIndex; i++)
                    {
                        tempConditionArray[startIndex] = tempConditionArray[startIndex] + " " +tempConditionArray[i+1];                        
                    }
    
                    tempConditionArray.RemoveRange(startIndex + 1,endIndex-startIndex);
                }
            }
            conditionArray = tempConditionArray;
    
            if (tempConditionArray.IndexOf("(") != -1)
                return CombineSubConditions(ref conditionArray);
            else
                return true;
        }
    

1 个答案:

答案 0 :(得分:1)

我没有评价写评论,所以我在“答案”中详细询问。

你想要得到什么? ||之间的一切 或每个BA1234?

如果您处于第二种情况,请尝试:

Regex myreg = new Regec("\\w+");

foreach (Match current in myReg(thetext))
{
    String curval = current.Value;
}
编辑:经过一些搜索后,我找不到任何好的解决方案。 当你尝试使用语义工具来执行逻辑任务时,也许正则表达式不是那样的好工具。抱歉,您似乎必须删除我的+1 :)。