簡體   English   中英

python正則表達式匹配一個組或不匹配它

[英]python regex match a group or not match it

我想匹配字符串:

從字符串作為字符串

它可能包含也可能不包含as

我目前的代碼是

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

但是此代碼匹配單個as 所以類似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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM