任何引号之间的字符串的正则表达式

Regular expression for string between any quotation mark

我想为以引号开头并以相同引号结尾的字符串编写正则表达式。它由字母数字词组成(例如 "PL",或 'CS',...)。 我考虑过 [^"].*[^"] ,但这只适用于 "" 这些。 我想要输出像 输入:"CS300" 输出:1 tSTRING 要么 输入:'a' 输出:1 tSTRING

谢谢

我的密码是

%{
int linecounter=1;
%}
%%
\n linecounter++;
(['"])[^'"]* printf("%d tSTRING \n", linecounter);
%%
main()
{
yylex();
}

使用否定字符 class 和反向引用:

(['"]).*?

解释:

(['"]) : matches a single or a double quote and keep it in group1
.*?    : matches what is between
     : backreference, same quote as in group 1

如果您的正则表达式风格不支持惰性量词:

(['"])[^'"]*

我写了 \"(\.|[^"])\" 和 \'(\.|[^'])\' 现在可以正常工作了。