使用 Perl 匹配两个重叠模式

2023-11-25

我希望我的问题还没有被其他人提出,因为我试图查看网站上的几乎所有地方,但我无法找到答案。

我的问题是:我正在制作一个 PERL 脚本,它必须检测每一次出现 of one or字符串中的另一个模式。

例如:

$string = "betaalphabetabeta";
$pattern = "beta|alpha";

在本例中,我希望我的脚本返回 4 个匹配项。

我认为通过使用匹配运算符可以轻松实现这一点,如下所示:

$string =~ /beta|alpha/g;

但是,由于我的两个模式(“alpha”、“beta”)部分重叠,因此我刚刚发布的代码段在第一个模式与第二个模式重叠时会跳过第一个模式的任何出现。

例如。如果我有一个像这样的字符串:

$string = "betalphabetabeta";

它只返回 3 个匹配项,而不是 4 个。

我尝试用 ?= 运算符做一些事情,但我无法以正确的方式将它与 OR 运算符结合起来......

有人有解决办法吗?感谢您的帮助!


下面使用零宽度断言(我相信这就是它的名字)。

#!/usr/bin/perl
use strict;
use warnings;

$_ = "betalphabetabeta";

while (/(?=(alpha|beta))/g) {
    print $1, "\n"; 

Prints:

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

使用 Perl 匹配两个重叠模式 的相关文章

  • 如何使用正则表达式限制小数点之前/之后/小数点以及整体的位数?

    我正在尝试检查数值是否具有特定数量的数字 总共不应超过 19 位数字 小数点前不能超过17位 整数部分 小数点后不得超过 4 位 小数部分 可以有小数点也可以没有 前面可以有 或 或没有 有效示例 1 1 0 0 1234567890123
  • 如何只读取文件的第一行

    我已经用谷歌搜索了一段时间 但我找不到只读取文件第一行的函数 我需要读取文本文件的第一行并从中提取日期 Perl 新手 open my file lt filename txt my firstLine lt file gt close f
  • 正则表达式等价

    有没有办法找出两个任意正则表达式是否等价 对我来说看起来很复杂的问题 但可能有一些 DFA 简化机制之类的 要测试等价性 您可以计算的表达式并进行比较
  • 提取单花括号内的值

    我想要一个收藏 value 一个字符串使用正则表达式 例如 lorem ipsum field1 lorem ipsum field2 lorem ipsum field1 lorem ipsum field2 field3 我会得到 fi
  • 用于计算句子中单词数的正则表达式

    public static int getWordCount String sentence return sentence split a zA Z0 9 a zA Z0 9 1 length sentence replaceAll a
  • Python - 用逗号分割,跳过括号内的内容

    我需要用逗号分隔字符串 但我对这种情况有一个问题 TEXT EXAMPLE THIS IS A EXAMPLE BUT NOT WORKS FOR ME SECOND THIRD 我想拆分并得到 var 0 TEXT EXAMPLE THI
  • htaccess 301 重定向 - 删除查询字符串 (QSA)

    我一直在努力处理一些 htaccess 重定向 我只是花了一些时间在堆栈上阅读和搜索 但无法获得适合我的场景的答案 我正在将旧客户端网站的 301 重定向到新客户端 旧页面有参数查询 我想从网址中删除它 menu php idCategor
  • 是否可以使用 Eclipse 的正则表达式搜索和替换转换为小写?

    我已经尝试过 L 但它似乎不是其语法的一部分 并且它的帮助没有提及任何可用的转换 我知道我可以并且知道如何从命令行执行此操作 但是 是否可以使用 Eclipse 的正则表达式搜索和替换进行大小写转换 您可以分两步完成 首先插入小写字母 那么
  • 将字符串的第一个字母大写(前面带有特殊字符) - PHP

    我想将字符串大写 例如 hello 我希望我的函数返回 Hello 我尝试过使用 regex 和 preg match 但没有运气 这是我之前的问题 与此相关 preg match 正在匹配两个字符 而它应该只匹配一个字符 https st
  • 如何使用 Perl 和正则表达式将 SQL 文档转换为 ColdFusion 脚本?

    我需要将 SQL 语句文档转换为 ColdFusion 文档 我对正则表达式只有一点经验 而且我是 Perl 超级新手 我昨天刚刚自学了它的基础知识 所以我可以完成这项任务 我正在尝试用 Perl 编写的脚本匹配和替换模式 该脚本保存为 B
  • C#中如何从字符串中提取十进制数

    string sentence X10 cats Y20 dogs 40 fish and 1 programmer string digits Regex Split sentence D 对于此代码 我在数字数组中获取这些值 10 20
  • regex.replace 查询字符串参数

    我不知道这是否可能 我有以下正则表达式 string sTest test aspx width 100 height 200 ltTest Text Regex Replace sTest lt
  • Java 中的正则表达式,\\s 与 \\s+

    下面两个表达式有什么区别 x x replaceAll s x x replaceAll s 第一个匹配单个空格 而第二个匹配一个或多个空格 它们是所谓的正则表达式量词 它们执行像这样的匹配 取自文档 http docs oracle co
  • PHP正则表达式替换链接url

    我需要添加href 之前http 如果这http 不遵循href or src 以下代码部分有效 部分意味着它考虑 a href 只但不src a s i a href target blank gt 0 a str 预先感谢各位的回复 s
  • 除了使用正则表达式之外,在 Swift 中解析 HTML

    下面是我想在 Swift 中解析的 HTML 代码 td class pinyin a href rsc audio voice pinyin pz yi1 mp3 span class mpt1 y span a a href rsc a
  • 使用 sed 替换复杂模式

    我想使用 sed 命令替换模式 要删除的图案如下所示 带有一个空格 var 0xaae8 x6A x6F x69 x6E x72 x65 x76 x65 x72 x73 x65 x73 x70 x6C x69 x74 x3E x74 x70
  • 检查程序是否正在运行,如果不在 perl 中则运行它

    我想知道如何检查程序是否正在运行 如果没有则运行该程序 使用 Kill 函数向要检查的进程 ID 发送 0 零 信号 如果进程存在 函数返回true 否则返回false Example check if process 1525 is ru
  • 正则表达式获取两个方括号之间的数字

    您好 我需要使用正则表达式在 JavaScript 中获取两对方括号内的字符串 这是我的字符串 12 23 asd 到目前为止我尝试的是使用这种模式 d 我需要获得价值12使用正则表达式 您可以使用以下正则表达式 d 这将提取12 from
  • 具有条件的重复行 pandas dataframe python

    我的数据框有问题 我的 df 是 product power brand product 1 3 x 1500W brand A product 2 2x1000W 1x100W product 3 1x1500W 1x500W brand
  • 快速从 RSS feed 获取 img url

    我希望能够从一段字符串中检索 img url 以下是我尝试检索的 img URL 的示例 p img width 357 height 500 src http images sgcafe net 2015 05 OVA1 357x500

随机推荐

  • Marketplace Windows Phone Beta 测试错误代码:805a0194

    在市场中添加应用程序进行 Beta 测试后 当我尝试打开应用程序 Beta 测试人员中的链接时 显示错误代码 805a0194 并且没有一个测试人员可以下载应用程序进行测试 该怎么办 这是什么错误 将应用程序添加到应用程序中心已经过去了 2
  • GS1条码解析

    我们需要解析对方提供的 GS1 datamatrix 条码 我们知道他们将使用 GTIN 01 批号 10 有效期 17 序列号 21 问题是条码阅读器输出一个字符串 格式如下 01076123456789001710050310AC345
  • 随机不重复?

    我想编写一个程序 以随机顺序显示列表的所有元素而不重复 在我看来 它应该有效 但只能重复打印这些元素 import random tab for i in range 1 8 item random choice house word co
  • 如何使用 Python 单击 HTML 页面上的某些链接时打开 Windows 文件夹

    我正在编写以下程序 import os filepath r C TestData openfolder html abc open filepath w abc writelines abc writelines a href os st
  • 设置必须采用“名称=值”的形式。不知道该怎么办

    因此 我正在解析 Azure 存储帐户的连接字符串 当我到达使用连接字符串的应用程序页面时 编译器捕获一个异常 指出 设置必须采用 名称 值 的形式 这是否意味着我应该更正设置 appSettings 的 app config 文件中的某些
  • Angular 2 令人惊叹的动画

    Angular 2 RC2 刚刚问世 我想知道它是否已经支持交错动画 ngFor DSL语言文档提到group and sequence但没有任何形式的摇晃 RC2中不包含交错动画吗 我不确定我是否同意 G nter 的观点 即 ng co
  • 如何修复“模块‘tensorflow’没有属性‘估计器’”错误

    我正在使用 conda 通过 YAML 创建的 env pip 在我的 Linux Mint 盒子上设置 Tensorflow v1 13 1 环境 设置后 每当我尝试导入时tf estimator我收到AttributeError标题中描
  • 如何将 tweepy Twitter 流保存到文件中?

    我有一个工作脚本 可以成功收集提到 stackoverflow 的推文 但是 我想在 iPython 中运行该脚本 而不是执行单独的 py 文件 理想情况下 我只想打开它的 ipyb 文件 选择全部运行 然后让它运行一周左右 当然不要关闭我
  • 如何避免 cmd.exe 弹出命令窗口

    我有一个命令 cmd exe c ping 1 1 1 1 n 1 w 10000 echo second command goes here 但执行时它会打开一个命令窗口 有没有办法避免弹出命令窗口 PS 我无法从那里删除 cmd exe
  • 使用 Fetch API 读取分块的二进制响应

    如何使用 Fetch API 读取二进制分块响应 我正在使用以下代码 该代码可以从服务器读取分块响应 然而 数据似乎以某种方式编码 解码 导致getFloat32有时会失败 我尝试使用curl 读取响应 效果很好 这让我相信我需要做一些事情
  • 在 constrOptim 中设置约束

    有没有一种简单的方法可以在 constrOptim 函数中为以下约束设置 theta ui ci c1
  • 如何使用 Eloquent 对分组结果进行排序?

    我已经尝试解决这个问题有一段时间了 但似乎无法使其发挥作用 我有一张与此类似的桌子 表 问题 id yearly issue year stock created at updated at magazine id 1 10 2000 1
  • 如何使用 HTML 验证日期范围?

    或者 是否可以使用 HTML 验证另一个字段的值 一个常见的示例是选择一个日期范围 其中 起始 日期应小于或等于 截止 日期 如果您可以在语法中使用元素引用 则以下内容将描述值之间所需的关系
  • 更改 Velocity.Log 文件的位置

    看起来很简单 文档位于http velocity apache org engine devel developer guide html Configuring Logging说要设置runtime log属性 这是我所有财产的所得 ve
  • 获取android中用户的语言

    http web archiveorange com archive v fwvde0wN3xcViMtADw6x 似乎 navigator language 属性在 android 上的 webview 中始终为 en 那么 获取用户语言
  • 确定硬币组合的算法

    最近 我遇到了一个关于编程算法的提示 但我不知道该怎么做 我以前从未真正编写过算法 所以我在这方面还是个新手 该问题要求编写一个程序来确定收银员根据硬币价值和硬币数量找零的所有可能的硬币组合 例如 一种货币可能有 4 个硬币 2 分 6 分
  • 有没有办法获取当前函数的函数名?

    defun foo send to debug log Error Function terminated get current function name 我目前这样做 defun foo send to debug log Error
  • 当购物车达到一定数量时添加促销产品

    我正在 WooCommerce 中寻找正确的钩子 因为当达到一定的购物车数量 例如 100 个常规单位 时 我需要将促销产品添加到购物车 我也用过钩子 init 但我认为这是不对的 这是我的代码 function add free prod
  • OpenCV for Android:无法加载级联分类器错误

    这是我第一次使用 openCV 库 我想用它来检测眼睛 我已经用过FdActivity本教程中提供的代码 http romanhosek cz android eye detection updated for opencv 2 4 6 本
  • 使用 Perl 匹配两个重叠模式

    我希望我的问题还没有被其他人提出 因为我试图查看网站上的几乎所有地方 但我无法找到答案 我的问题是 我正在制作一个 PERL 脚本 它必须检测每一次出现 of one or字符串中的另一个模式 例如 string betaalphabeta