2024-04-26 11:49:49 发布
网友
我要匹配字符串:
from string as string
它可能包含也可能不包含as。你知道吗
as
我现在的代码是
r'(?ix) from [a-z0-9_]+ [as ]* [a-z0-9_]+'
但是这个代码匹配一个a或s。所以类似from string a little的东西也会出现在结果中。你知道吗
a
s
from string a little
我想知道做这件事的正确方法是什么。你知道吗
你可以用
(?i)from\s+[a-z0-9_]+\s+(?:as\s+)?[a-z0-9_]+
参见regex demo
请注意,您使用了x“verbose”(自由间距)修饰符,模式中的所有空格都变成了re引擎在分析模式时忽略的格式化空白。因此,我建议使用\s+来匹配一个或多个空格。如果您真的想使用单个正则空间,只需省略x修饰符并使用正则空间。如果需要x修饰符插入注释,请转义常规空格:
x
re
\s+
r'(?ix) from\ [a-z0-9_]+\ (?:as\ )?[a-z0-9_]+'
此外,要匹配字符序列,需要使用分组构造,而不是字符类。这里,(?:as\s+)?定义了一个可选的非捕获组,该组匹配1个或0个as+空间子串。你知道吗
(?:as\s+)?
你可以用
参见regex demo
请注意,您使用了
x
“verbose”(自由间距)修饰符,模式中的所有空格都变成了re
引擎在分析模式时忽略的格式化空白。因此,我建议使用\s+
来匹配一个或多个空格。如果您真的想使用单个正则空间,只需省略x
修饰符并使用正则空间。如果需要x
修饰符插入注释,请转义常规空格:此外,要匹配字符序列,需要使用分组构造,而不是字符类。这里,
(?:as\s+)?
定义了一个可选的非捕获组,该组匹配1个或0个as
+空间子串。你知道吗相关问题 更多 >
编程相关推荐