我需要解析一个文本并检查所有方括号之间是-
,-
之前和之后是否必须至少有一个字符。
我尝试了以下代码,但它不起作用。匹配数量很大。
Regex regex = new Regex(@"[\.*-.*]");
MatchCollection matches = regex.Matches(textBox.Text);
SampleText:
Node
(Entity [1-5])
答案 0 :(得分:3)
想想我不妨提供答案......重申我的观点(经过修改):
*
匹配0次或更多次出现。你想要+可能。 [
和]
将所有这些放在一起,以下内容可以做得更好:
Regex regex = new Regex(@"\[[^-[\]]+-[^[\]]+\]");
虽然它有点乱,但关键是[^[\]]
表示除方括号外的任何字符。 [^-[\]]
意味着{但不允许-
。这是一个优化而不是必需的,但它只是减少了正则表达式引擎在计算匹配时必须完成的工作。感谢ridgerunner指出了这种优化。
答案 1 :(得分:1)
方括号意味着Regexes中有一些特殊的东西,你需要逃避它们。此外,如果您想要至少一个字符,则需要使用+
而不是*
。
Regex regex = new Regex(@"\[.+-.+\]");
MatchCollection matches = regex.Matches(textBox.Text);
答案 2 :(得分:0)
string txt = "(Entity [1-5])";
Regex reg = new Regex(@"\[.+\-.+\]");
如果是#:
string txt = "(Entity [1-5])";
Regex reg = new Regex(@"\[\d+\-\d+\]");