加上正则表达式模式

时间:2015-07-21 14:35:29

标签: c# regex

我有以下正则表达式:

string patternSign = "([-]+)|([*]+)|([+]+)|([/]+)";

它适用于所有符号,但不适用于" +"符号。我读了另外一个问题,我必须逃避它,但是当我尝试时,我得到了一个sintax错误。

输入字符串为:Al == At + An

当我在下面的代码中进行拆分时:

 string[] substrings = Regex.Split(input, patternSinais);

结果是:

  • Al
  • =
  • ATAN

应该是:

  • 的Al
  • =
  • +

它不仅仅与加号一起使用,它适用于该字符串中的所有其他符号。

有什么不对?

提前谢谢。

3 个答案:

答案 0 :(得分:1)

您错过了=作为模式的一部分,您可以将模式缩小为

"([-*+/=]+)"

代码示例:

string[] pieces = Regex.Split("Al==At+An", "([-*+/=]+)");
foreach (string piece in pieces)
{
    Console.WriteLine(piece);
}

结果:

Al
==
At
+
An

答案 1 :(得分:1)

我在代码中发现了错误。 我正在使用代码从表达式中删除空格,但它正在删除加号。

代码是:

String input = Regex.Replace(formula, "[( )+]", "");

我刚删除它,现在它工作正常。

感谢您的回答。

答案 2 :(得分:1)

集合符号[ ]中的所有内容都被视为文字,包括+*以及.等所有特殊模式字符。

撰写[x+]表示匹配以下文字字符x+一个

如果在该集合之外添加了+ [x+]+,则x现在意味着匹配以下文字的一个或多个 字符+select leaguename, player_count from League l,( select leagueid, count(leagueid) as player_count from Player group by leagueid having count(leagueid) >= All (select count(leagueid) from Player group by leagueid) ) t where l.leagueid = t.leagueid order by leaguename 任意组合。