python正则表达式匹配组还是不匹配i

2024-04-26 11:49:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我要匹配字符串:

from string as string

它可能包含也可能不包含as。你知道吗

我现在的代码是

r'(?ix) from [a-z0-9_]+ [as ]* [a-z0-9_]+'

但是这个代码匹配一个as。所以类似from string a little的东西也会出现在结果中。你知道吗

我想知道做这件事的正确方法是什么。你知道吗


Tags: 方法字符串代码fromstringasixlittle
1条回答
网友
1楼 · 发布于 2024-04-26 11:49:49

你可以用

(?i)from\s+[a-z0-9_]+\s+(?:as\s+)?[a-z0-9_]+

参见regex demo

请注意,您使用了x“verbose”(自由间距)修饰符,模式中的所有空格都变成了re引擎在分析模式时忽略的格式化空白。因此,我建议使用\s+来匹配一个或多个空格。如果您真的想使用单个正则空间,只需省略x修饰符并使用正则空间。如果需要x修饰符插入注释,请转义常规空格:

r'(?ix) from\ [a-z0-9_]+\ (?:as\ )?[a-z0-9_]+'

此外,要匹配字符序列,需要使用分组构造,而不是字符类。这里,(?:as\s+)?定义了一个可选的非捕获组,该组匹配1个或0个as+空间子串。你知道吗

相关问题 更多 >