2017-01-17 4 views
1

アルファベットの文字と "、"または ";"を一致させようとしています。ドキュメントhttps://docs.perl6.org/language/regexesに従って "<:L>アルファベット文字"を使用しようとしています。しかし、コンパイラは不平を言う。 a..zA..Zを使用せずにそれを行う正しい方法は何ですか?Perl6:ユーザー定義の文字クラスまたは範囲で<alpha>を使用する方法は?

say "a,b,c;d,e;xyz" ~~ m/ <[ <alpha> \, \; ]>+ /; 

エラーメッセージ:

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/ <[ <alpha> \, \<HERE>; ]>+ /; 

ありがとうございました!!

答えて

2

あなたはEnumerated Character Class<[ ... ]>構文)内部<alpha>のようなサブルールを使用することはできません。正しい列挙された文字クラスの例は、 'a'、 'b'、または 'c'の文字に一致するように<[abc]>です。あなたは<[ <alpha> ...を始めた列挙された文字クラスを書いていました。これは文字 '<'、 'a'、 'l'、 'p'、 'h'、 'a'を列挙し、その時点でコンパイラは "文字クラスで予期せず見つかった繰り返し文字"を言う。

say "a,b,c;d,e;xyz" ~~/<+ :L + [,;] >+ /; 

私たちは「DOC:それは

とても似,;を含む列挙文字クラスに適切なUnicode property:L)を追加するための適切な方法は何ですか

両方のリンクは、 "1つは<:L1 +:N>と書くことができる"というビットの近くでこれを(超簡潔に)説明するのに最も近いものになります。構文は空白については気がつかないことに注意してください。 (あなたはそれが間違って取得する場合、それは一般的に一致しないでしょう。)

+0

私は、あなたの答えの周りにいくつかの文脈を追加してください。コードのみの回答は理解しにくいです。あなたの投稿にさらに情報を追加することができれば、これはAskerと将来の読者に役立ちます。 – RBT

+0

Brad、@ RBTのリクエストごとにあなたの回答を編集しましたが、自分で編集する時間はありません。あなたは私がそうしたことを嬉しく思っていますか、あなたはあなたに一日か何かを与えて、あなた自身でそのような編集をすることを好むでしょうか? – raiph

+0

@raiphもしそれが私にとって重要なのであれば、私は投稿する前にそうしていたでしょう。 –

0

あなたはあまりにも<アルファ>と組み合わせることができます別の答えで述べたように

say "a,b,c;d,e;xyz" ~~ m/ <[,;] + alpha>+/

Enumerated character classesドキュメントは、文字クラスを組み合わせて説明しています。

+0

mr_ronありがとう!できます !私の最初の難しさは、<[ ]>の使用方法と、角括弧の使用方法でした。ありがとう。 – lisprogtor