Parsing 在Rebol解析中,如何检查输入的开始?
我需要一个规则,让我们在开始时调用它,它匹配输入的开始 也许它存在,或者如何实现它 我想工作的例子:Parsing 在Rebol解析中,如何检查输入的开始?,parsing,rebol,Parsing,Rebol,我需要一个规则,让我们在开始时调用它,它匹配输入的开始 也许它存在,或者如何实现它 我想工作的例子: 解析“x”[开始时的“x”]=>匹配 解析“{some other chars}x”[到开始“x”处的“x”]=>不匹配 动机: 我正在尝试解析一些类似标记的模式,其中一个“*” 开始强调,但仅当在空格之后或在 正文: [开始时的空格]强调 使用@hostilefork解决方案,我可以写: [到“*”位置:[如果(头?位置)|(位置:后位置):位置空间]跳过…]没有这样的规则。但是如果有,你必须
[到“*”位置:[如果(头?位置)|(位置:后位置):位置空间]跳过…]
没有这样的规则。但是如果有,你必须定义你是否特别想知道它是在一个系列的开始…还是在要求你开始解析的开始。e、 g.这是成功还是失败
parse (next "cab") [to "a" begin skip "b"]
它不在系列的开头,但解析位置没有移动。这算是开始吗
如果您只想在本系列的开头进行测试:
[to "a" pos: if (head? pos) ...]
您必须在开始时捕获该位置,或者了解它,以查看解析位置是否已前进:
[start: to "a" pos: if (pos = start) ...]
也许不完全是你想要的,但找到第一个匹配可以通过以下步骤完成 你必须搜索“b”后接“a”的补语模式 需要进行一些修改以匹配第一个字符为“a”的情况。
点击
将定位在“a”后面的字符处。我不清楚这个问题。[to“a”]规则是否将光标定位在输入“a”的开头(如果存在)?@Edoc我指的是整个输入的开头,因此规则听起来“转到第一个“a”,检查它是否在数据的开头,如果是,则跳过,否则失败”。您能否举几个数据或输入的示例,因为我不确定您的要求是什么。有很多可能的解决方案。如果你的数据和输入的意思是一样的,那真的是一样的simple@sqlab添加示例
>> text-to-searh: "jjjj ball adran"
>> b*: complement charset "b"
>> parse/all text-to-search [ any [ b* #"a" | "a" hit: to end | skip ] ]
>> probe hit
"ll adran"