[英]python regex match a group or not match it
我想匹配字符串:
从字符串作为字符串
它可能包含也可能不包含as
。
我目前的代码是
r'(?ix) from [a-z0-9_]+ [as ]* [a-z0-9_]+'
但是此代码匹配单个a
或s
。 所以类似from string a little
也会出现在结果中。
我想知道这样做的正确方法是什么。
您可以使用
(?i)from\s+[a-z0-9_]+\s+(?:as\s+)?[a-z0-9_]+
查看正则表达式演示
请注意,您使用了x
“verbose”(自由间距)修饰符,并且您的模式中的所有空格都变成了re
引擎在解析模式时忽略的格式化空格。 因此,我建议使用\\s+
来匹配 1 个或多个空格。 如果您真的想使用单个常规空格,只需省略x
修饰符并使用常规空格。 如果您需要x
修饰符来插入注释,请转义常规空格:
r'(?ix) from\ [a-z0-9_]+\ (?:as\ )?[a-z0-9_]+'
此外,要匹配字符序列,您需要使用分组构造而不是字符类。 在这里, (?:as\\s+)?
定义一个可选的非捕获组,匹配 1 或 0 次出现的as
+ 空格子字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.