2

我正在编写一个程序来检测文本中的降价强调语法。例如,用 括起来的粗体语法**和用 括起来的斜体语法*

我有以下正则表达式模式:

NSRegularExpression *regex;
regex = [NSRegularExpression regularExpressionWithPattern:@"(\\*{1,2}).+?(\\*{1,2})"
                                                                       options:NSRegularExpressionDotMatchesLineSeparators
                                                                         error:NULL];

然而,这种模式也能检测到错误配对的模式。例如,匹配* this is a **sample** text将返回* this is a **而不是**sample**.

如何解决问题?

4

1 回答 1

2

您可以使用这种模式的反向引用:

(\*{1,2}).+?\1

这意味着在第一组中捕获的任何内容(单星号或双星号)都必须在以后重复为\1.

例如:

NSRegularExpression *regex;
regex = [NSRegularExpression regularExpressionWithPattern:@"(\\*{1,2}).+?\\1"
    options:NSRegularExpressionDotMatchesLineSeparators
    error:NULL];
于 2013-08-11T02:04:32.770 回答