【问题标题】:Removing parenthesis from string with regex [closed]使用正则表达式从字符串中删除括号 [关闭]
【发布时间】:2020-05-07 18:57:56
【问题描述】:

我有这个词:word = 'ROTONDE04)'。我想把它清理干净,只保留字母。

因此我尝试了:

>>> re.search('[^a-zA-Z].', word)
<re.Match object; span=(7, 9), match='04'>

为什么re.search没有返回括号?它不属于我的班级[^a-zA-Z]

我想避免使用re.sub

【问题讨论】:

标签: python regex


【解决方案1】:

您已指定要匹配的两个字符:

  1. 任何不是字母的字符 ([^a-zA-Z]),后面紧跟
  2. 任何字符 (.)

字符串中第一次满足此条件的是04

您可能希望匹配长度至少为一个字符且不包含字母的字符串,在这种情况下,您需要+ 而不是.

>>> re.search('[^a-zA-Z]+', word)
<re.Match object; span=(7, 10), match='04)'>

如果您想匹配零次或多次,而不是一次或多次,则将使用* 字符而不是+。在这种情况下,使用 * 而不是 + 会产生一个空字符串,因为它在开头匹配。

【讨论】:

  • 为什么使用*会返回一个空字符串?是不是因为它一开始只搜索一个潜在的匹配项?
  • re.search() 从字符串的开头搜索并找到它可以找到的第一个令人满意的匹配项。因为一开始的空字符串会满足[^a-zA-Z]*,所以它会返回。
猜你喜欢
  • 2016-05-11
  • 1970-01-01
  • 2011-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多