perl6正则 2: 字母,数字,空格,下划线, 字符集

数字, 字母, 下划线

在perl6中, 如果是 数字, 字母, 下划线, 在正则里可以正接写上。

> so 'perl6' ~~ /6/
True
> so 'perl6_' ~~ /_/
True
>

数字, 字母, 下划线

如果不是数字、字母、 下划线, 可以用 反斜线转义, 或用单、双相号包围。

>  'name@company.uk' ~~ / name@co /
锝�ame@co锝?
>  'name@company.uk' ~~ / name'@'co /
锝�ame@co锝?
>  'name@company.uk' ~~ / name"@"co /
锝�ame@co锝?
>

 空格

空格默认是忽略的, 比如, /ab     cde/ 相等于 /abcde/。

> so 'ab    cde' ~~ /ab    cd/
False
> so 'ab    cde' ~~ /ab  s  cd/
False
> so 'ab    cde' ~~ /ab  s+  cd/
True
>

<[]> / <-[]>字符集

用<[]>定义字符集, 范围符号用 ..

如果要取反, 可以用这种形式: <-[]>

> so  ('abc1de' ~~ /<-[a12bdf_ec@#.?+$]>/)
False
> ~ ('-abc1de' ~~ /<[a12bdf_ec@#.?+$]>/)
a
>

 在字符集中, 不用转义圆点与非字母字符

> ~ ('-abc1de' ~~ /<[a12bdf_ec@#.?^+$/\]>/)
a
> ~ ('-abc1de' ~~ /<[a12bdf_ec@#.?^+$/\`]>/)
a
> ~ ('-abc1de' ~~ /<[a12bdf_ec@#.?^+$/\`~]>/)
a
> ~ ('-abc1de' ~~ /<[a12bdf_ec@#.?^+$/\`~-]>/)
-
> ~ ('-abc1de' ~~ /<[-a12bdf_ec@#.?^+$/\`~]>/)
-
> ~ ('-abc1de' ~~ /<[a-12bdf_ec@#.?^+$/\`~]>/)
-
>

 有一点要注意的就是: 符号, 除了放在开头或结尾外, 在字符集中的其他地方要转义。 同样, 要转义的还有 / 符号。

当然, 量词 ? / * / + / **之类的也能用于一个字符集:

> ~ ('-abc1de' ~~ /<[a-12bdf_ec@#.?^+$/\`~]>**3/)
-ab
> ~ ('-abc1de' ~~ /<[a-12bdf_ec@#.?^+$/\`~]>?/)
-
> ~ ('-abc1de' ~~ /<[a-12bdf_ec@#.?^+$/\`~]>+/)
-abc1de
> ~ ('-abc1de' ~~ /<[a-12bdf_ec@#.?^+$/\`~]>*/)
-abc1de
> ~ ('-abc1de' ~~ /<[a-12bdf_ec@#.?^+$/\`~]>**2/)
-a
> ~ ('-abc1de' ~~ /<[a-12bdf_ec@#.?^+$/\`~]>**5/)
-abc1
>
原文地址:https://www.cnblogs.com/perl6/p/7414275.html