相关疑难解决方法(0)

为什么/如何将重复的任意性格与捕获组匹配需要一个附加变量?

我使用perl6正则表达式匹配长度最小的重复任意字符序列。

阅读完https://docs.perl6.org/language/regexes#Capture_numbers并调整给出的示例后,我使用“外部变量”提出了以下代码:

#uses an additional variable $c
perl6 -e '$_="bbaaaaawer"; /((.){} :my $c=$0; ($c)**2..*)/ && print $0';

#Output:  aaaaa
Run Code Online (Sandbox Code Playgroud)

为了帮助说明我的问题,在perl5中使用了类似的正则表达式:

#No additional variable needed
perl -e ' $_="bbaaaaawer"; /((.)\2{2,})/ && print $1';
Run Code Online (Sandbox Code Playgroud)

有人可以启发我“储蓄” $0$c空缺的需求/好处{}吗?是否有匹配的替代(更好/类似)的perl6正则表达式?

提前致谢。

regex perl6

11
推荐指数
2
解决办法
280
查看次数

在perl6语法中放宽空格的最佳方法是什么?

我想拥有一个语法,它是否存在空格...我想匹配:

this                '   <foo>    <bar>    <baz>    '
and also this       '<foo><bar><baz>'
Run Code Online (Sandbox Code Playgroud)

这有效:

token TOP     { \s* <foo> \s* <bar> \s* <baz> \s* }
Run Code Online (Sandbox Code Playgroud)

但是,在阅读了有关:sigspace, <。ws >规则的所有信息之后,我可以想象有一种方法可以避免重复的* \ s。(即,如何在per6语法中匹配十六进制数组

请问有人可以告诉我在perl6语法中是否还有更好的方法?

注意 这不能通过简单地将令牌声明更改为rule来解决 -当我尝试这种方法时,解析字符串中要么匹配空格,要么不匹配空格(但不能同时匹配两个)。

perl6

11
推荐指数
1
解决办法
114
查看次数

白色空间何时在Perl6语法中真的很重要?

当Perl 6语法规则中的空白区域显着时,有人可以澄清吗?我正在通过反复试验来学习一些,但似乎无法在文档中找到实际的规则.

例1:

rule number {
    <pm> \d '.'? \d*[ <pm> \d* ]?
}

rule pm {
    [ '+' || '-' ]?
}
Run Code Online (Sandbox Code Playgroud)

将匹配一个数字2.68156e+154,而不关心存在的空格rule number.但是,如果我之后添加一个空格\d*,它将失败.(即<pm> \d '.'? \d* [ <pm> \d* ]?失败).

示例2:如果我试图在单词的中间找到文字,那么它们之间的间距很重要.即,在找到条目Double_t Delta_phi_R_1_9_pTproj_13_dat_cent_fx3001[52] = {

grammar TOP {
    ^ .*? <word-to-find> .* ?
}
rule word-to-find {
    \w*?fx\w*
}
Run Code Online (Sandbox Code Playgroud)

会找到这个词.然而,如果规则的定义word-to-find更改为: fx\w* fx\w*\w*fx \w*那么就不会进行匹配.

此外,然后定义'[52]'将匹配,而定义'fx[52]'将不匹配.

感谢您的任何见解.指向文档中正确点的指针将有很大帮助!谢谢,

whitespace grammar perl6

5
推荐指数
2
解决办法
209
查看次数

标签 统计

perl6 ×3

grammar ×1

regex ×1

whitespace ×1