parsing - 在 Rebol PARSE 中,如何检查输入的开头?
问题描述
我需要一个规则,我们称之为 AT-BEGIN,它与输入的开头相匹配。
也许它存在,或者如何实现它?
我想工作的例子:
- 解析 "x" [AT-BEGIN "x"] => 匹配
- 解析 "{some-other-chars}x" [to "x" AT-BEGIN "x"] => 不匹配
动机:
我正在尝试解析一些类似降价的模式,其中“*”开始强调,但前提是在空格之后或文本开头:[空格 | 开头]强调
使用@hostilefork 解决方案我可以写:
[to "*" pos: [if (head? pos) | (pos: back pos) :pos space] skip ...]
解决方案
没有这样的规定。但是如果有的话,你必须定义你是否特别想知道它是在一个系列的开头......还是在你被要求从哪里开始解析的开头。例如,这应该成功还是失败?
parse (next "cab") [to "a" begin skip "b"]
它不是在系列的开头,但解析位置没有移动。这算不算开始?
如果您只想在系列开始时进行测试:
[to "a" pos: if (head? pos) ...]
您必须在开始时捕获该位置,或者以其他方式知道它以查看解析位置是否已经提前:
[start: to "a" pos: if (pos = start) ...]
推荐阅读
- php - 如果文件字段为空并且当它不为空时,上传是值,是否有任何方法可以上传空值?
- php - apache2 工作和 php7.2 但不在一起
- reactjs - React 创建永远不会重建的自定义 Hook
- php - 使用 SimpleHtmlDom 从脚本标签的出现中解析 JSON 数据 - PHP
- amazon-web-services - AWS EC2 更改公共 DNS 主机名,以便它与反向 DNS 查找一起使用
- javascript - Javascript如何将新元素从初始数组推送到相同索引的数组数组中的每个数组?
- python - 如何根据具有连续属性值对对象(元组)进行分组?
- excel - 将宏按钮复制粘贴到不同的工作表时宏不起作用
- django - 如何暂时禁用 Django 索引(用于 SQLite)
- python - 仅在需要时链接方法