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