polars.Expr.str.extract_all#
- Expr.str.extract_all(pattern: str | Expr) Expr[source]#
提取给定正则表达式模式的所有匹配项。
提取每个连续不重叠的正则表达式匹配作为一个列表。如果干草堆字符串是
null,则返回null。- Parameters:
- pattern
一个有效的正则表达式模式,与regex crate兼容。
- Returns:
- Expr
数据类型
List(String)的表达。
注释
要使用标志修改正则表达式的行为(例如“详细”模式和/或区分大小写的匹配),请使用内联的
(?iLmsuxU)语法。例如:>>> df = pl.DataFrame( ... data={ ... "email": [ ... "real.email@spam.com", ... "some_account@somewhere.net", ... "abc.def.ghi.jkl@uvw.xyz.co.uk", ... ] ... } ... ) >>> # extract name/domain parts from the addresses, using verbose regex >>> df.with_columns( ... pl.col("email") ... .str.extract_all( ... r"""(?xi) # activate 'verbose' and 'case-insensitive' flags ... [ # (start character group) ... A-Z # letters ... 0-9 # digits ... ._%+\- # special chars ... ] # (end character group) ... + # 'one or more' quantifier ... """ ... ) ... .list.to_struct(fields=["name", "domain"]) ... .alias("email_parts") ... ).unnest("email_parts") shape: (3, 3) ┌───────────────────────────────┬─────────────────┬───────────────┐ │ email ┆ name ┆ domain │ │ --- ┆ --- ┆ --- │ │ str ┆ str ┆ str │ ╞═══════════════════════════════╪═════════════════╪═══════════════╡ │ real.email@spam.com ┆ real.email ┆ spam.com │ │ some_account@somewhere.net ┆ some_account ┆ somewhere.net │ │ abc.def.ghi.jkl@uvw.xyz.co.uk ┆ abc.def.ghi.jkl ┆ uvw.xyz.co.uk │ └───────────────────────────────┴─────────────────┴───────────────┘
有关内联表达式修饰符使用的更多信息,请参阅正则表达式库的分组和标志部分。
示例
>>> df = pl.DataFrame({"foo": ["123 bla 45 asd", "xyz 678 910t", "bar", None]}) >>> df.select( ... pl.col("foo").str.extract_all(r"\d+").alias("extracted_nrs"), ... ) shape: (4, 1) ┌────────────────┐ │ extracted_nrs │ │ --- │ │ list[str] │ ╞════════════════╡ │ ["123", "45"] │ │ ["678", "910"] │ │ [] │ │ null │ └────────────────┘