我有一个Pandas DataFrame列,其值如下所示:
| 姓名|
| - -----|
| 比萨饼名称在这里ZZ HELLO|
| 你好ZZZZZZ世界|
我想找出两个或更多个Z的所有示例,而不确定某个单词,在这种情况下是PIZZA。我会使用.str.replace(regex,"")
将其替换为空白。最终结果如下所示:
| 姓名|
| - -----|
| 比萨饼名称在这里你好|
| 你好世界|
不是最好的理解正则表达式,但以下并不像我想象的那样对我有用,因为它仍然检测PIZZA中的ZZ。
^((?!.*PIZZA.*).)*$|Z{2,}
1条答案
按热度按时间ohfgkhjo1#
您可能需要考虑使用单词边界标记,例如使用以下模式
\bZ{2,}\b
。但是,如果你只是做.str.replace(regex,"")
,它将导致一个双空格,即。PIZZA NAME HERE HELLO
。简单的解决方法是将边界标记更改为空白标记,即
\sZ{2,}\s
。这将删除两个空格,因此需要.str.replace(regex," ")
来代替,并且在字符串的开头和结尾处也失败。因此,为了解决字符串的开始/结束问题,我们可以使用
(?:\s|\b)Z{2,}(?:\s|\b)
组合这两个方法。Regex101 link