2016-09-10 4 views
10

저는 Ruby의 정규 표현식을 처음 접했고 어떤 의미인지 전혀 알지 못합니다. \k<name+0>. 내가 얻지 못할 부분은 +0입니다.정규 표현식에서 "+0"은 무엇을 의미합니까? <name+0>?

다음은 예입니다 -이 정규 표현식 회문 일치 :

\A(?<p>(?:(?<l>\w)\g<p>\k<l+0>|\w))\z 

나는 더 이상 정확하게 일치하는 +0\k<l+0>에서 제거하지합니다.
내 테스트 :

>> /\A(?<p>(?:(?<l>\w)\g<p>\k<l+0>|\w))\z/.match "aabbcdcbbaa" 
#=> #<MatchData "aabbcdcbbaa" p:"aabbcdcbbaa" l:"c"> 

>> /\A(?<p>(?:(?<l>\w)\g<p>\k<l>|\w))\z/.match "aabbcdcbbaa" 
#=> nil 

내가 한 짓을했는지는 +0을 제거합니다. 아직 어떤 문서 나 예제를 찾지 못했지만, 누군가 올바른 방향으로 나를 가리킬 수 있습니까?

+0

큰 질문입니다. 그것은'\ g <...>'의 멋진 세상에 소개되었습니다. –

답변

11

\k<l+0>(?<l>\w)의 일치가 있었다 때라는 포착 기 'l' 일치 하였다 'l'

\k<l+0> 일치 동일한 텍스트라는 캡처 그룹에 저장된 (?<l>\w)

함께 작동 이 역 참조와 동일한 재귀 수준이되었습니다.

+1

굉장! 또한, 그것은 '+ 0'입니다. '+ 1'이나 뭐 다른 함수가 있습니까? –

+0

@ Cᴀʟʟᴏᴅᴀᴄɪᴛʏ +0는 동일한 재귀 레벨입니다. +1은 한 레벨이 깊고 -1은 한 레벨 아래입니다. – Andie2302

+1

나는 당신의 말을 의심하지 않지만 '+ 0'에 대한 참조를 찾고 싶습니다. 바람직하게는 Ruby 문서에서는, 그러나 Oniguruma 문서에서는 그렇지 않습니다. –

관련 문제