gpt4 book ai didi

rebol - 如何忽略解析时注释掉的行?

转载 作者:行者123 更新时间:2023-12-05 01:02:11 25 4
gpt4 key购买 nike

我有一个 PHP 数组,我正在解析它以获取电子邮件地址。有时我想评论一个条目,以便我可以使用不同的值进行测试。

下面是一个数组的例子:

array('system.email' => array(
'to' => array(
'contactus' => 'contactus@example.com',
'newregistration' => 'newreg@example.com',
'requestaccess' => 'requestaccess@example.com',
// 'workflow' => 'workflow@example.com'
'workflow' => 'test_workflow@example.com'
)
));

这是我的 PARSE 规则:
parse read %config.php [
thru "'system.email'" [
thru "'to'" [thru "'workflow'" [thru "'" copy recipient-email to "'^/"]]
] to end
]

当我运行它时, recipient-email 的值是“workflow@example.com”。我如何编写我的规则,使其忽略以 // 开头的行?

最佳答案

吃掉注释行的规则如下所示:

spacer: charset reduce [tab cr newline #" "]
spaces: [some spacer]
any-spaces: [any spacer]

[any-spaces "//" thru newline]

您可以根据当前规则判断您想如何做到这一点。这是一种仅处理数组中的注释的有点困惑的方法。
text: {array('system.email' => array(                                                      
'to' => array(
'contactus' => 'contactus@example.com',
'newregistration' => 'newreg@example.com',
'requestaccess' => 'requestaccess@example.com',
// 'workflow' => 'workflow@example.com'
'workflow' => 'test_workflow@example.com'
)
));}

list: []

spacer: charset reduce [tab cr newline #" "]
any-spaces: [any spacer]

comment-rule: [any-spaces "//" thru newline]

email-rule: [
thru "'"
copy name to "'" skip
thru "'"
copy email to "'"
thru newline
]

system-emails: [
thru "'system.email'" [
thru "to' => array("
some [
comment-rule |
email-rule (append list reduce [name email])
]
] to end
]

parse text system-emails
print list

这将导致数组中的姓名和电子邮件块。

也许更全面的方法可以在解析之前处理源并删除所有评论。这是我过去使用过的一个函数:
decomment: func [str [string!] /local new-str com comment-removing-rule] [

new-str: copy ""

com: [
"//"
thru newline
]
comment-removing-rule: [
some [
com |
copy char skip (append new-str char)
]
]

parse str comment-removing-rule
return new-str
]

关于rebol - 如何忽略解析时注释掉的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26897229/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com