匹配引号分隔字符串与正则表达式但有例外

时间:2015-07-01 12:38:03

标签: regex

您好我尝试检查带引号的字符串是否最后没有:T:U。 (我使用.Net Regex类)

到目前为止我所拥有的是

([\"'])(?:\\\1|.)*?\1

这匹配所有双引号和单引号的单词,例如"Test"'Test' 我被困的地方是,我不希望正则表达式匹配"Test":U'Test':U"Test":T'Test':T

2 个答案:

答案 0 :(得分:0)

您可以使用以下否定前瞻断言和锚点:

([\"'])(?:\\\1|.)*?\1(?!:[TU])
                      ^^^^^^^^

请参阅RegEX Demo

答案 1 :(得分:0)

您需要在结尾(?!:[UT])添加否定前瞻。顺便说一句,你可以获得一个更有效的模式:

string pattern = @"[""'](?>(?<="")[^""\\]*(?>\\.[^""\\]*)*""|(?<=')[^'\\]*(?>\\.[^'\\]*)*')(?!:[UT])";