我试图匹配任何字母字符和","或";" 我试图根据文档https://docs.perl6.org/language/regexes使用"<:L>字母字符" .但是,编译器抱怨.不使用a..zA..Z这样做的正确方法是什么?
say "a,b,c;d,e;xyz" ~~ m/ <[\, \; ]>+ /;
错误信息:
Potential difficulties: Repeated character (a) unexpectedly found in character class at C:\Users\Guest\Documents/avg.pl:128 ------> ay "a,b,c;d,e;xyz" ~~ m/ <[\, \ ; ]>+ /;
非常感谢你 !!
你不能用一个分治像
内部枚举字符类(的<[ ... ]>
语法).正确枚举字符类的一个示例是<[abc]>
匹配字符'a','b'或'c'.你写了一个开始的枚举字符类<[
.这列举了字符'<','a','l','p','h','a' - 然后编译器抱怨说"在字符类中意外地发现了重复字符(a)".
什么是正确的方法
将相应的Unicode属性(:L
)添加到包含,
和;
类似的枚举字符类中:
say "a,b,c;d,e;xyz" ~~ / <+ :L + [,;] >+ /;
我们所链接的文档最接近于解释这个(超级简洁地)在"一个人可以写<:Ll +:N>"的位附近.请注意,关于空格的语法很有用.(如果你弄错了,它通常会无法匹配.)