我试图得到单个支架后跟非空格,但不是双括号和非空格的匹配。我有@"\[[\S^\[]"
但它不是很工作。为了澄清一点,我正在研究一个wiki解析器(所以它是基于字符串的 - 我以为只是正则表达式的工作原理)。我的链接以[开头,但我想逃避[双[[。维基已经有效,但我正在创建一个修改后的版本,希望能够更容易地扩展。正则表达式[ S但不是[[ S?
这里的处理程序调用代码:
foreach (Rule rule in rules)
{
if (position + rule.Length > text.Length)
break;
if ((rule.PreCondition & condition) == rule.PreCondition)
{
if (substring.Length < rule.Length)
substring = text.Substring(position, rule.Length);
if (rule.Pattern.IsMatch(substring))
{
string previous = text.Substring(0, position);
sb.Append(previous);
text = text.Remove(0, position);
position = 0;
text = rule.Handler(new HandlerParameter(text, condition, previous));
}
}
}
所以BracketHandler使用该模式以确定是否我们在一个支架。我的原始模式是\[\S
,但对于[[如果它正在检查[s和最后一个字符是a [[s]不起作用。只需要提一下我的令人费解的代码,但至少可以看到它。
看起来像Perl,所以是的,是的,它:) :) – 2011-05-15 23:07:22
谢谢你这个作品的一些案件,但不是一切。我最终预先解析了双括号。一个问题,后视会更慢,这就是为什么另一个? – 2011-05-16 20:00:04