단일 대괄호와 일치하는 뒤에 공백이 아닌 대괄호와 공백이 아닌 일치 항목을 찾으려고합니다.Regex [ S하지만 [[ S?
Aka: This is ok: [s
This should be skipped: [[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]를 확인하는 경우에는 작동하지 않습니다. 이전 문자의 마지막 문자는 [. 내 복잡한 코드로 머리를 숙이고 있지만 최소한 게시 할 수 있도록 게시됩니다.
Perl과 비슷해 보입니다. 그렇습니다. 예 : 그렇습니다. –
일부 경우에는 작동하지만 모든 것이 아닌 것은 고맙습니다. 나는 이중 괄호에 대해 사전 파싱을 끝내었다. 질문, lookbehind가 느려질 것입니다, 그 이유는 다른 것입니까? –