Perl 6 中的递归正则表达式?

2024-01-23

我一直在试图弄清楚如何在 Perl 6 中执行递归正则表达式。对于一个玩具示例,平衡括号匹配器,它将匹配((())()) inside (((((())()).

  • PCRE https://regex101.com/r/otEKh5/1例子:/\((?R)?\)/

  • Onigmo https://rubular.com/r/chy2TdjBeiIWM8例子:(?<paren>\(\g<paren>*\))

我以为这样就可以了:

my regex paren {
  '(' ~ ')' <paren>*
}

或者更简单的

my regex paren {
  '(' <paren>* ')'
}

但这失败了

No such method 'paren' for invocant of type 'Match'
in regex paren at ...

您需要明确表示您正在调用my-范围正则表达式:

my regex paren {
    '(' ~ ')' <&paren>*
}

注意&已添加。接着就,随即:

say "(()())" ~~ /^<&paren>$/    # 「(()())」
say "(()()" ~~ /^<&paren>$/     # Nil

虽然有时您确实可以在不明确编写&,并且在使用它时确实可以:

say "(()())" ~~ /^<paren>$/    # 「(()())」
say "(()()" ~~ /^<paren>$/     # Nil

这只有效,因为编译器发现词法范围中定义了一个名为paren所以编译<paren>语法到那个。对于递归情况,只有在解析正则表达式之后才会安装声明,因此需要明确声明。

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

Perl 6 中的递归正则表达式? 的相关文章

  • Java正则表达式:为什么数字[0-9]、逗号等不是unicode?

    class Test public static void main String args String regex p L System out println 0 matches regex 上面的代码打印 false 但我期待 tr
  • 使用正则表达式模式查找 -name 并使用 cp 替换文件名

    目前我正在使用该命令cron复制 data从源到目标路径 find source path name data exec cp target path 源码结构为 source path category1 001 data source
  • 获取字符串中的最后一个整数

    我需要隔离包含多个整数的字符串中最新出现的整数 我怎样才能得到23代替1 for lastnum1 text 1 out of 23 lastnum1 this gt getEval eregi replace out of text 你可
  • 如何通过php获取网页的Open Graph协议?

    PHP 有一个简单的命令来获取网页的元标记 get meta tags 但这仅适用于具有名称属性的元标记 然而 开放图谱协议如今变得越来越流行 从网页获取 opg 值的最简单方法是什么 例如 我看到的基本方法是通过 cURL 获取页面并使用
  • 使用FFMpeg确定视频类型,然后进行转换?

    我正在尝试以编程方式确定文件的真实类型 看来我必须使用 FFMPeg 来实现这一点 我想确定上传的文件实际上是否是 MP4 或 FLV 对于 Flash 视频 或 WebM 对于 HTML5 我知道 FFMPeg 中的 i 运算符 但我不知
  • 如何让 Vim 突出显示非 ascii 字符?

    我试图让 Vim 突出显示非 ASCII 字符 是否有可用的设置 正则表达式搜索模式或插件来执行此操作 在 a 中使用范围 搜索中的字符类 您应该能够excludeASCII 十六进制字符范围 因此突出显示 假设您有hlsearch启用 所
  • 防止字符串中出现西里尔文/希腊文/中文 - C# 4.0

    我们有一个支持希腊语 西里尔语 中文字符的系统 使用 ASP NET C 4 0 但第三方系统似乎无法正常工作 为了避免为此第三方系统输入数据时出现问题 我想将文本字段限制为仅接受英语或重音字符 但返回其他字符的验证错误 我怎样才能做到这一
  • Perl regex:如何知道匹配数

    我循环遍历一系列正则表达式并将其与文件中的行进行匹配 如下所示 for my regex regexs ref LINE for rawfile regex do do something here next LINE 有没有办法让我知道我
  • 当找到匹配时使用 sed 替换行首

    我有一个 Java 文件 我想注释包含匹配的任何代码行 myvar 我认为 sed 应该在这里帮助我 sed s myVar not sure what to put here g MyFile java 我不知道要输入什么 not sur
  • 根据列中的部分字符串匹配选择数据框行

    我想根据列中字符串的部分匹配从数据框中选择行 例如列 x 包含字符串 hsa 使用sqldf if它有一个like语法 我会做类似的事情 select from lt gt where x like hsa 很遗憾 sqldf不支持该语法
  • python:正则表达式匹配文件扩展名

    您好 我正在尝试获取 url 中调用的文件的扩展名 例如 wp includes js jquery jquery js ver 1 3 2 HTTP 1 1 并获取传递到文件的查询参数 延期的最佳方式是什么 urlparse urlpar
  • 版本差异? Java 中的正则表达式转义

    看来正则表达式转义在不同版本的 Java 中的工作方式不同 在 Java openjdk 16 0 1 中编译工作正常 在 Java openjdk 11 0 11 中抛出此编译错误 test java 15 error illegal e
  • PHP 删除字符最后一个实例之前的所有内容

    有没有办法删除某个字符之前的所有内容 包括最后一个实例 我有多个字符串 其中包含 gt e g the gt cat gt sat gt on gt the gt mat welcome gt home 我需要对字符串进行格式化 以便它们变
  • PHP 电子邮件验证[重复]

    这个问题在这里已经有答案了 For PHP最好的电子邮件验证方法是什么preg NOT ereg因为它是已弃用 删除 I don t需要检查该网站是否存在 这不像最高安全性 我找到了很多方法ereg但它们 显然 不是好的做法 我建议你使用F
  • Zend RegEx Validator 的自定义有意义的错误消息

    我正在验证表单中的文本字段 如下所示 name new Zend Form Element Text name name gt setLabel First Name gt setRequired true gt addFilter new
  • 如何使用正则表达式验证 1-99 范围?

    我需要验证一些用户输入 以确保输入的数字在 1 99 范围内 含 这些必须是整数 Integer 值 允许前面加 0 但可选 有效值 1 01 10 99 09 无效值 0 007 100 10 5 010 到目前为止 我已经制定了以下正则
  • 如何让 Vim 匹配不以七位数字开头的行?

    我有一个大约 1000 行的文件 除个别行外 所有行均以七位数字开头 我需要捕捉这些行并将它们与前一行实际连接起来 我已经成功地能够使用以下正则表达式模式匹配以七位数字开头的任何行 d 7 我似乎无法让它匹配任何一行不匹配不过 这种模式确实
  • while 循环中 regex.exec() 赋值的更好解决方案

    这里有更好的解决方案吗 我尽量避免里面的作业while但仍然能够循环匹配并使用捕获的组 var match var CSS URL PATTERN url s s s s gm while match CSS URL PATTERN exe
  • 在Python中比较字符串的最快方法

    我正在用 Python 编写一个脚本 该脚本将允许用户输入一个字符串 该字符串将是指示脚本执行特定操作的命令 为了便于讨论 我会说我的命令列表是 lock read write request log 现在 我希望用户能够输入 log 一词
  • 如何匹配撇号('),除非它被转义(\')?

    是否可以为此构造一个正则表达式 如果是这样 如果有人展示如何操作 我将不胜感激 使用这个正则表达式

随机推荐

  • 在 Windows 上从命令行向 git commit -m 添加换行符

    我的公司有一项政策 即对特定项目的所有签入都必须遵循 git 提交的特定多行模板 如何最简单地从 Windows 命令行创建一条包含多行的提交消息 This is almost exactly a duplicate of Add line
  • 2个列表之间的共同元素比较

    给定两个输入列表 如何创建两个输入共有的元素列表 例如 对于输入 1 2 3 4 5 6 and 3 5 7 9 结果应该是 3 5 用于输入 this this n that and this not that that 结果应该是 th
  • XCode C++ 缺少精子()

    我正在使用 C 和 XCode 创建一个命令行应用程序来保存文件权限 但是我无法识别精子 方法 错误是 使用未声明的标识符 精子 我的包含内容和有问题的代码如下 My includes include
  • Android 4.3 上的 YouTube 嵌入式播放器

    我正在尝试将 YouTube 播放器嵌入到我的网页中 如下所示 我遇到的问题是 播放器最初加载并播放第一个视频正常 但是当调用 loadVideoById 时 播放器看起来要加载视频 视频标题文本更改 但随后卡在黑屏上而不是播放 自从我的手
  • 如何使用WinAPI隐藏控制台窗口?

    我试图隐藏控制台窗口当我的C使用这个简单的应用程序启动WinAPI code define CONSOLE NAME 6FD66E14 FF0F 4B94 B8AF AFE3D42DC399 void hide window void Se
  • 通过 cmake 从 C++ 扩展构建 Python 子模块

    我正在尝试通过 cmake 将 c 扩展作为子模块合并到现有的 python 库中 构建 C 扩展可以正常工作 并将其作为 python 模块导入也可以 但不能作为头库的子模块 我有以下目录结构 frontend foo py bar py
  • 如何从“git stash save --all”中恢复?

    我想隐藏未跟踪的文件 但我一直传递错误的选项 对我来说 这听起来是对的 git stash save a all 但这实际上也隐藏了被忽略的文件 正确的是 git stash save u include untracked 当我跑步时gi
  • Pandas-将值设置为空数据框

    我已经初始化了一个空的 pandas 数据框 现在正在尝试填充该数据框 但我一直遇到相同的错误 这是我正在使用的 简化的 代码 import pandas as pd cols list ABC df pd DataFrame column
  • 带有点击处理程序和滚动条的 Google 地图信息框

    我有一个使用 Google Maps javascript API 和 Infobox 插件 本机 InfoWindow 的可自定义版本 的应用程序 它工作得很好 直到我出现以下用例 如果内容很大 我需要一个带有滚动条的信息框 并且它还需要
  • 无法创建 ScriptPluginFactory 类型的服务

    我的 gradle 突然停止工作了 目前的配置是 环境变量为GRADLE HOME 指向Gradle 3 2 1 只需运行命令即可gradle在命令提示符下 我收到以下消息 What went wrong Could not create
  • 如何部署消息排序的pubsub触发云函数?

    我想部署一个带有消息排序的 Pubsub 触发的云函数 https cloud google com pubsub docs ordering https cloud google com pubsub docs ordering gclo
  • 我如何删除 python 2.7,因为我已经在 ubuntu 上安装了 3.6.5?

    我安装了 2 7 和 3 6 5 起初在 ubuntu 18 04 中 唯一可用的 python 版本是 3 6 但在我安装了 numpy 包之后 2 7 也安装了 它变成了默认版本 有什么解决方案可以使 3 6 成为默认值而不是 2 7
  • Zend Forms - 元素 ID 修改以允许重复使用

    我有一个Zend Form我想在一页中多次重复使用的对象 我遇到的问题是每次渲染时它都有相同的元素 ID 我一直无法找到一种方法 可以在每次渲染表单时为所有 ID 提供唯一的前缀或后缀 完整的解决方案 子类Zend Form class M
  • .NET WebApi 如何防止 JSON 的 "$ref": "x" 输出

    我将 Web Api 与实体框架一起使用 我有一个名为 Gift 的控制器 当客户端 GET 的 API 时 我通过使用实体框架从 DB 获取所有 Gifts 并将其作为 JSON 返回 这是我的控制器功能 public List
  • 基于 DNS 的策略,用于在服务器关闭时显示漂亮的“当前离线”页面

    当服务器关闭时 如何使站点自动显示一个漂亮的 当前离线 页面 我的意思是 整个服务器关闭并且请求无法到达 IIS 手动更改 DNS 不是一个选项 Edit 我正在寻找某种 DNS 技巧来重定向到其他服务器 以防主服务器出现故障 我可以对 D
  • 如何设置 HTML5 范围输入的样式,使其在滑块前后具有不同的颜色?

    我希望左侧为绿色 右侧为灰色 如上图所示就完美了 最好是纯 CSS 解决方案 只需要担心 WebKit 这样的事可能吗 Pure CSS解决方案 Chrome 隐藏溢出input range 并填充剩余的所有空间 带有阴影颜色的拇指 IE
  • 为什么即使在配置之后 Git 也不允许我提交?

    这个问题看起来像是重复的 但事实并非如此 只是一个不断重复的细微差别 git 不断告诉我 请告诉我你是谁 即使在设置之后也是如此 当我跑步时git commit 这就是我得到的 git commit Please tell me who y
  • 我可以使用 JQuery 从 web.config 读取数据吗?

    我可以使用 JQuery 从 web config 读取数据吗 Jquery 是在浏览器中运行的 javascript 您的 web config 驻留在您的服务器上 如果您想公开 web config 中的数据 我认为您应该创建某种可以从
  • 编译错误:“stoi”不是“std”的成员

    My code include
  • Perl 6 中的递归正则表达式?

    我一直在试图弄清楚如何在 Perl 6 中执行递归正则表达式 对于一个玩具示例 平衡括号匹配器 它将匹配 inside PCRE https regex101 com r otEKh5 1例子 R Onigmo https rubular