当前位置: 首页 > 面试题库 >

如何使用python正则表达式查找和替换句子中第n个出现的单词?

蒋胡非
2023-03-14
问题内容

仅使用python正则表达式,如何查找和替换句子中第n个出现的单词?例如:

str = 'cat goose  mouse horse pig cat cow'
new_str = re.sub(r'cat', r'Bull', str)
new_str = re.sub(r'cat', r'Bull', str, 1)
new_str = re.sub(r'cat', r'Bull', str, 2)

我在上面有一个句子,其中“猫”一词在句子中出现了两次。我希望将’cat’的第二次出现更改为’Bull’,使第一’cat’词保持不变。我的最后一句话看起来像:“猫鹅老鼠马猪牛牛”。在上面的代码中,我尝试了3次不同的时间都无法获得想要的结果。


问题答案:

像下面这样使用负前瞻。

>>> s = "cat goose  mouse horse pig cat cow"
>>> re.sub(r'^((?:(?!cat).)*cat(?:(?!cat).)*)cat', r'\1Bull', s)
'cat goose  mouse horse pig Bull cow'

演示

  • ^ 断言我们处于起步阶段。
  • (?:(?!cat).)*匹配任何字符,但不匹配cat,零次或多次。
  • cat匹配第一cat个子字符串。
  • (?:(?!cat).)*匹配任何字符,但不匹配cat,零次或多次。
  • 现在,将所有模式包含在一个捕获组中,例如((?:(?!cat).)*cat(?:(?!cat).)*),以便我们以后可以引用那些捕获的字符。
  • cat现在,下面的第二个cat字符串已匹配。

要么

>>> s = "cat goose  mouse horse pig cat cow"
>>> re.sub(r'^(.*?(cat.*?){1})cat', r'\1Bull', s)
'cat goose  mouse horse pig Bull cow'

更改内的数字{}以替换字符串的第一个,第二个或第n个出现的字符串cat

要替换字符串的第三次出现cat,请将2花括号放在其中。

>>> re.sub(r'^(.*?(cat.*?){2})cat', r'\1Bull', "cat goose  mouse horse pig cat foo cat cow")
'cat goose  mouse horse pig cat foo Bull cow'


 类似资料:
  • 在这个问题的背景下,我想做以下修改: 查找: funcA(参数0,参数1,参数2,参数3); 替换: funcA可以有除param0之外的任意数量的参数。怎么做呢?为简单起见,忽略基本情况,即当传递给funcA的参数仅为param0时。 funcA是: 职能是: 编辑: 参数(param1,param2..)只是包含字母的字符串。

  • 问题内容: 我需要将非ASCII的某些字符更改为“ _”。例如, 如果我在Python中使用正则表达式,该怎么做? 有没有不使用RE的更好方法呢? 问题答案: 针对Python 3更新: 首先,我们使用创建字节字符串-默认情况下,它使用UTF-8编解码器。如果您有字节字符串,那么当然可以跳过此编码步骤。然后,我们使用ascii编解码器将其转换为“普通”字符串。 这使用了UTF-8的属性,即所有非A

  • 问题内容: 我需要替换字符串的一部分。我浏览了Python文档并发现了re.sub。 我期望这能打印,而不是“酒吧”。 谁能告诉我我做错了什么? 问题答案: 除了捕获要 替换 的零件外,您还可以捕获要 保留 的零件,然后使用引用对其进行引用以将它们包括在替换字符串中。 尝试以下方法: 另外,假设这是HTML,则应考虑使用HTML解析器来执行此任务,例如Beautiful Soup 。

  • 我想以firstName和lastname的形式获得输出。怎么用正则表达式做,有什么想法吗?

  • 我正在使用以替换子字符串 我现在面临的问题是,只有在字符串替换不支持的情况下,我才想要替换整个单词。< br >因为我必须替换非常非常大的字符串,可能以GB为单位。与字符串替换相比,正则表达式非常慢。< br >例如:text: - 正则表达式将时间缩短了近 100 倍(https://medium.com/codezillas/golang-replace-vs-regexp-de4e48482

  • Change is inevitable, except from vending machines. — Robert C. Gallagher Puppet 的 regsubst 函数提供了一种处理文本的简单方法, 用于在字符串中查找和替换,或者从字符串提取匹配的模式。 例如,我们通常需要对从 facter 或者从外部程序获得的数据做这样的处理。 在本例中将会看到如何使用 regsubst 提