我的表达可以是任何一个
1. BA11201 | (BA11201 && BA11231 || BA11231 & BA11231) & BA11231 || (BA11201 && BA11231 || BA11231 & BA11231) & ARM
2. BA11201 | (BA11201 && (BA11231 & BA11231)) & BA11231 || (BA11201 && BA11231 || BA11231 & BA11231) & ARM
我想分开吗?我如何编写正则表达式表达式来拆分它们?还是c#代码?
我需要像
这是代码用于第一个语句,但如何为第二个语句执行?
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;
}
答案 0 :(得分:1)
我没有评价写评论,所以我在“答案”中详细询问。
你想要得到什么? ||之间的一切 或每个BA1234?
如果您处于第二种情况,请尝试:
Regex myreg = new Regec("\\w+");
foreach (Match current in myReg(thetext))
{
String curval = current.Value;
}
编辑:经过一些搜索后,我找不到任何好的解决方案。
当你尝试使用语义工具来执行逻辑任务时,也许正则表达式不是那样的好工具。抱歉,您似乎必须删除我的+1 :)。