在 perl6 语法中放松空白的最佳方法是什么?

2023-11-22

我想要一个在是否存在空格方面宽松的语法...我想匹配:

this                '   <foo>    <bar>    <baz>    '
and also this       '<foo><bar><baz>'

这有效:

token TOP     { \s* <foo> \s* <bar> \s* <baz> \s* }

但读完所有内容后:信号空间, <.ws> and rule我可以想象有一种方法可以在不重复 *\s 的情况下做到这一点。 (即。如何在 per6 语法中匹配十六进制数组)

请有人告诉我是否有更好的方法在 perl6 语法中做到这一点?

注意。这不是通过简单地改变token声明者rule- 当我尝试这种方法时,我最终得到了either匹配空格或没有空格(但不是both) 在解析字符串中。


也许您的问题是这三个规则“gotchyas”之一:

  • 如果您想要空白/标记边界匹配at the start的一条规则,before the first atom, 你必须明确地提供它(通常带有明确的<.ws>).

  • 如果您想要空白/标记边界匹配betweena 的每场比赛量化的 atom (eg <foo>*)您必须在原子和量词之间包含空格(例如<foo> *).

  • 默认<ws>定义为regex ws { <!ww> \s* }。如果你想rule在特定语法中使用不同的模式,然后在该语法中定义您自己的模式。 (蒂莫蒂莫++)

有关上述内容的进一步讨论,请参阅我的更新答案如何在 per6 语法中匹配十六进制数组.


以下四个正则表达式与您的两个示例字符串匹配:

my \test-strings := '   <foo>    <bar>    <baz>    ', '<foo><bar><baz>';

my \test-regexes := token { \s*   '<foo>' \s* '<bar>' \s* '<baz>' \s* },
                    rule  { \s*   '<foo>' \s* '<bar>' \s* '<baz>' \s* },
                    rule  { \s*   '<foo>'     '<bar>'     '<baz>'     },
                    rule  { <.ws> '<foo>'     '<bar>'     '<baz>'     }

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

在 perl6 语法中放松空白的最佳方法是什么? 的相关文章

随机推荐

  • 实现自定义 MVC 基本视图页面

    我正在尝试实现 MVC 自定义基本视图页面以 覆盖 User财产种类 这将使我的CustomPrincipal在任何视图中均可访问的类型 在网上搜索后 我发现Phil Haack 关于实现自定义基本视图页面的说明 我完全按照说明进行操作 但
  • Unicode字符插入数据库后变成问号

    当我将一些用 Unicode 编写的文本插入数据库时 它们变成了问号 数据库编码设置为UTF 8 还有什么可能是不正确的 当我检查 phpMyAdmin 时 只插入了问号 这是我用于连接数据库的代码 define DB HOST local
  • 如何在 Python 中创建和导入自定义模块

    如何将以下函数保存在一个 python 文件中 然后在另一个文件中使用它 文件A中的函数 def basic x print x B文件中的声明 basic some string A 创建一个包含所有模块的文件夹 例如 让我们使用 MyM
  • HTML.fromHtml 换行符消失

    我从 EditText 框中获取 Spanned Text 并使用 HTML toHtml 将其转换为 HTML 标记字符串 这很好用 我已经验证该字符串是正确的并且包含 br 在适当的位置 但是 当我需要使用 HTML fromHtml
  • 如何将 sqlite3 模块与 Electron 一起使用?

    我想使用开发桌面应用程序electron使用通过 npm 使用命令安装的 sqlite3 包 npm install save sqlite3 但它在电子浏览器控制台中给出以下错误 Uncaught Error Cannot find mo
  • 选择 .Net 的图表库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我有一位客户需要将图表应用程序 很久以前是用 MFC 开发的 转换为 C 该应用程序显示大型网络 大量图形元素 并允许用户通过图形用户界面编辑 操作数据 我决定最好使用一个库 而不是
  • 如何将
    的箭头与 的内容垂直对齐

    我正在尝试垂直对齐附带的箭头
  • 改进猫鼬验证错误处理

    我有以下具有所需验证的架构 var mongoose require mongoose var validator require validator var userSchema new mongoose Schema email typ
  • Sharepoint CMS 与 UmbracoCMS

    我在一家大型地方政府组织工作 该组织即将开始使用 SharePoint 将我们老化的内部网替换为一个能歌善舞的协作网站 Intranet 的重点将是用 SharePoint 安装替换散布在整个组织中的随机文件 内容页面和文档 这将神奇地使所
  • 更改整个应用程序中的按钮样式

    我正在尝试将应用程序中按钮的所有 TextColor 更改为白色 并尝试将其设为粗体 但这并没有发生 我正在覆盖the android Widget Button我正在开发 Jelly Bean 4 1 2 我究竟做错了什么 清单中的主题定
  • 直接从 AlarmManager 唤醒服务

    In the https github com commonsguy cwac wakeful演示中 调用 OnAlarmReceiver 广播接收器 的 onReceive 方法来响应警报 onReceive 方法启动服务 使用了两种 I
  • 如何在 LINQ 中使用 whereif

    大家好 有人可以帮助我如何在 LINQ 中最好地使用 whereif IQueryable
  • 如何调用返回 data.table 中多行和多列的函数?

    我想调用 data table 中的一个函数来计算一组汇总统计信息 如下所示 summ stats lt function vec list Min min vec Mean mean vec S D sd vec Median media
  • Python解压相对性能?

    太长了 的python 中可用的各种压缩算法 gzip bz2 lzma等 哪个有最好的减压表现 完整讨论 Python 3 有用于压缩 解压缩数据的各种模块包括gzip bz2 and lzma gzip and bz2此外 您还可以设置
  • 如何使用 angular.js 在标题元素中绑定数据

    我正在学习 Angular js 并且我设置了我尝试使用选择元素来改变它
  • 使用 java.exe 以静默模式执行

    我想知道是否有办法将 java exe 作为后台进程执行 静默模式执行 例如 java cp 我的类 arg1 我想将上述语句作为后台进程运行 而不打开命令窗口 在 Windows 下 使用javaw exe代替java exe See h
  • 将对象集合作为参数传递到 SQL Server 存储过程

    我有一个一般性问题 即是否可以做某事 以及这是否是最有效的方法 总结一下 我可以将对象集合作为参数传递给存储过程吗 假设我有一个名为的 SQL Server 表Users UserID Forename Surname 另一个表称为Hobb
  • Rails 7:如何完全删除 Turbo?

    我有一个 Rails 7 应用程序 经过一些开发后 我发现 Turbo Hotwired 产生了太多问题 我不需要它用于此应用程序 有没有办法从现有的 Rails 应用程序中完全删除 Turbo 建议的删除方法是什么 你需要删除gem tu
  • 如何在 JavaScript 中检查 XMLHttpRequest 对象是否支持 W3C 进度事件?

    有没有办法在 JavaScript 中检查是否XMLHttpRequest物体支撑W3C 进展事件 我的意思是这里如果设置onload onprogress onabort onerror等某些处理函数的属性将使这些函数调用这些事件 如所述
  • 在 perl6 语法中放松空白的最佳方法是什么?

    我想要一个在是否存在空格方面宽松的语法 我想匹配 this