gpt4 book ai didi

regex - Flex(适合正则表达式)- 匹配以相同字符开头和结尾的字符串

转载 作者:行者123 更新时间:2023-12-01 00:29:17 26 4
gpt4 key购买 nike

(我转义了所有引号,这可能会使其难以阅读)

我需要在 flex 中匹配以相同字符开头和结尾的字符串...我知道长手方式(RE 是 -\"a[^(a\")]a\"|\"b [^(b\")b\"| 等等...),但我很肯定这不是我需要做的(明天期中考试!);

我需要在 flex 中执行此操作,但如果您能想到一个简短的正则表达式,我可以将其转换为 flex 表示法。

我在想的是——

%%
int firstChar;
%x string;
%%
\"[A-Za-z] { firstChar = yytext+1; /* to get first character,
for people unfamiliar
with c pointers */
BEGIN(string);}
<string>[^((firstChar)\")] {}
<string>[(firstChar)\"] { BEGIN(INITIAL); }

(刚接触 flex,可能记法不正确)

但这在几个方面让我感到困扰,首先,拥有该变量使得它不是一种常规语言;其次,我不知道你是否可以在模式匹配中使用变量;第三,如果它只是一个普通字符串,我不知道如何不匹配它。第三,我不知道如何返回在“字符串”中匹配的所有内容

感谢您的帮助!

最佳答案

使用backreference . \1\9 是指正则表达式使用括​​号 () 捕获的前九组。

var regex:RegExp = /\b([a-zA-Z])\w+\1\b/g;
var test:String = "some text that starts and ends with same letter";
var result:Object;
while(result = regex.exec(test))
trace(result[0]);

痕迹

text
that
starts

正则表达式解释:

\b          //word boundary
([a-zA-Z]) //capture the first character
\w+ //one or more characters (use * to capture two letter words)
\1 //the first character
\b //word boundary

g /*
make the regex global. Without this, the program will will
print the first match ('text') in an infinite loop
*/

关于regex - Flex(适合正则表达式)- 匹配以相同字符开头和结尾的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1635254/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com