2017-01-17 3 views
1

알파벳 문자와 ","또는 ";"을 일치 시키려고합니다. "< : L> 알파벳 문자"를 사용하려고합니다. 설명서는 https://docs.perl6.org/language/regexes입니다. 그러나 컴파일러는 불평합니다. 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 + [,;] >+ /; 

우리 '는 문서 : 그것은

과 같이 ,;을 포함하는 열거 된 문자 클래스에 적절한 Unicode property (:L)를 추가 할 수있는 적절한 방법이 무엇

두 사람 모두 "가까운 사람이 < : L1 + : N>이라고 쓸 수있는 비트 근처에서 이것을 (아주 간결하게) 설명하는 것에 가장 가깝습니다. 이 문법은 공백에 대해 매우 까다 롭습니다.

+0

답변에 대해 더 자세히 설명해 주시기 바랍니다. 코드 전용 답변은 이해하기 어렵습니다. 그것은 당신이 당신의 포스트에있는 정보를 더 추가 할 수있는 경우에 둘 다 구경꾼 및 미래 독자를 도울 것이다. – RBT

+0

Brad, @ RBT의 요청에 따라 답변을 편집했습니다. 직접 수정하지 않아도됩니다. 당신이 행복하게 해 주었습니까? 아니면 내가 당신에게 그런 편집을하기 위해 무엇을 하든지간에 당신이 원하는 것을 원하십니까? – raiph

+0

@raiph 만약 내가 중요하면 게시하기 전에 그렇게했을 것입니다. –

0

당신은 너무 < 알파 >와 결합 할 수 있습니다. (당신이 얻을 경우 잘못은 일반적으로 일치하지 않을 수 있습니다) :

다른 답변에서 언급 한 바와 같이
say "a,b,c;d,e;xyz" ~~ m/ <[,;] + alpha>+/

Enumerated character classes 문서는 문자 클래스를 조합에 대해 설명합니다.

+0

mr_ron! 그것은 작동합니다! 나의 초기 어려움은 <[ ]>과 함께 꺽쇠 괄호()를 사용하는 방법에 관한 것이었다. 감사. – lisprogtor

관련 문제