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

2024-05-11

仅使用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)

我上面有一个句子,其中“猫”一词在句子中出现了两次。我希望将第二次出现的“猫”更改为“公牛”,而第一个“猫”字不变。我的最后一句话如下: “猫鹅老鼠马猪牛牛”。在我上面的代码中,我尝试了 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'

DEMO https://regex101.com/r/sS1qO8/4

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

OR

>>> 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, put 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'

在这里使用上面的正则表达式...... https://regex101.com/r/wP7pR2/52

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用python正则表达式查找并替换句子中第n次出现的单词? 的相关文章

随机推荐

  • 如何在 MFC 中创建带圆角的进度控件?

    我需要在 MFC 应用程序中创建一个带圆角的进度条 我尝试过使用 CreateRoundRectRgn 和 SetWindowRgn 的组合 它具有使控件完全消失的效果 我还尝试使用透明的 GIF 覆盖层 该覆盖层将绘制在进度栏的顶部 但我
  • .NET 3.5 中的实体框架延迟加载

    由于服务器限制 我仅限于 Net 3 5 我使用 Linq to SQL 进行延迟加载 但后来切换到实体框架 L2E 在 3 5 中没有延迟加载 而 L2S 有 有没有办法以某种方式重新生成模板来实现这一目标 您必须在 EF 1 NET 3
  • 全局 git 配置数据存储在哪里?

    使用时git config global要进行设置 它将写入哪个文件 Example git config global core editor blah 我在这些地方找不到它 C Program Files Git etc gitconf
  • Django:如何判断 post_save 信号是否在新对象上触发?

    我需要对 Django 中新创建的对象进行一些后台后处理 此后处理只能在新对象上运行 而不是在刚刚更新的对象上运行 我知道在 pre save 中我可以检查该对象是否有 id 如果没有则它是一个新对象 但问题是在后处理中我需要访问id 以便
  • 如何确定 SQLite 索引是否唯一? (使用 SQL)

    我想通过 SQL 查询找出索引是否是唯一的 我正在使用 SQLite 3 我尝试了两种方法 SELECT FROM sqlite master WHERE name sqlite autoindex user 1 这将返回有关索引的信息 t
  • 在 Go 中生成随机、固定长度的字节数组

    我有一个字节数组 固定长度为4 token make byte 4 我需要将每个字节设置为随机字节 我怎样才能以最有效的方式做到这一点 这math rand就我而言 方法不提供随机字节函数 也许有一种内置的方法 或者我应该生成一个随机字符串
  • 失败 INSTALL_FAILED_MEDIA_UNAVAILABLE

    我已经为 Visual Studio 2010 安装了 JDK Android SDK 和 Mono Android 我创建了一个空的解决方案 并且使用 Android 2 3 3 启动并运行了模拟器 到目前为止一切顺利 当我尝试将应用程序
  • C# 计算元音

    我正在学习 C 编程 并且正在尝试计算元音 我让程序循环遍历句子 但它不返回元音计数 而是仅返回字符串的长度 任何帮助将不胜感激 static void Main int total 0 Console WriteLine Enter a
  • 保护 JSF 应用程序的安全

    我的一位自由职业者朋友邀请我加入他的 JSF 2 0 项目 我正在慢慢加快速度并将各个部分整合在一起 来自 Windows Forms NET 世界 至少可以说 我还有很多东西需要学习 我主要担心的是对于如何保护 JSF 应用程序缺乏明显的
  • 聚合物嵌套应用程序路由未正确映射

    我正在努力找到一些正确的基本路线 我正在使用 Polymer 1 5 0 但在使用嵌套路由时遇到问题 我正在使用应用程序路由0 9 2 As 这篇文章建议 https www polymer project org 1 0 blog rou
  • 如何在正则表达式之后打印单词但不打印相似的单词?

    我想要一个 awk 或 sed 命令来打印正则表达式之后的单词 我想找到一个单词后面的单词 但不是看起来相似的单词 该文件如下所示 somethingsomething X Windows Icon xournal somethingsom
  • “npm”不被识别为内部或外部命令、可操作程序或批处理文件

    我对 Nodejs 完全陌生 我正在尝试让 nodejs 在我的 Windows 2008 机器上工作 以便安装 Karma 我将使用它来 TDDing 我的 AngularJs 代码 到目前为止我已经完成了以下步骤 使用 Chocolat
  • 是否有用于 AES 的纯 Perl 模块?

    是否有用于 AES 的纯 Perl 模块 地穴 Rijndael PP http search cpan org dist Crypt Rijndael PP Rijndael 是底层算法AES https secure wikimedia
  • 如何在 Scala 中编写 Pig UDF

    我正在尝试在 Scala 中编写 Pig UDF 使用 Eclipse 我已将 pig jar 添加为 java 构建路径中的库 这似乎解决了以下 2 个导入问题 导入 org apache pig EvalFunc 导入 org apac
  • Docker:通过 CLI 使用 --password 是不安全的。使用--密码-stdin

    当我在持续集成 CI 过程中登录注册表时 出现以下警告 WARNING Using password via the CLI is insecure Use password stdin 我应该更换吗 password with passw
  • 在布局中添加空格

    我正在尝试在 android 中创建空行 这就是我一直在做的事情 android layout width fill parent android layout height wrap content android text n n 我想
  • 从 exe 文件中获取汇编级代码?

    我当时正在做linux汇编编程 在过去的几天里我已经转而学习windows汇编编程 我在用ml作为我的汇编器和golink作为我的链接器 我有我的汇编代码并已获得我的exe从中 现在我需要取回它的十六进制 xff xab x55等等 在li
  • 删除 Swift 3 中 Core Data 实体中的所有数据

    有没有办法批量删除核心数据中所有实体中存储的所有数据 我在某处读到 在 iOS 9 或 10 中 苹果引入了一种批量删除的方法 但我似乎找不到任何关于它的好信息 最终 我只需要一个遍历实体并删除其中所有数据的函数 看起来它应该很简单 但事实
  • 如何在 Debian 上编译 DOS 程序?

    在我的汇编语言课程中 我们使用 DPMI 编写 DOS 程序 不幸的是 我无法一直使用 32 位 Windows 机器 我在我使用的几乎每台计算机上都安装了 Debian 虚拟机 我已经安装了 DOSBox 和 DOSEMU 有什么办法可以
  • 如何使用python正则表达式查找并替换句子中第n次出现的单词?

    仅使用python正则表达式 如何查找并替换句子中第n次出现的单词 例如 str cat goose mouse horse pig cat cow new str re sub r cat r Bull str new str re su