2012-10-01 12 views
16

나는 이미 .*은 어떤 문자도 0 개 이상을 의미하지만, 은 누군가가 다음 작품에서 어떻게 .*을 어떻게 설명 할 수 있었는지, 그리고 그것이 무엇을 의미하는지 이해할 수 있습니까?어떻게 *. (별표)가 작동합니까?

.*([a-m/]*).* 

.*([a-m/]+).* 

.*?([a-m/]*).* 
+1

Regex에서'.'는 숫자, aplhabet 문자 또는 다른 특수 문자가 될 수 있습니다. '*'는 0 번 이상을 의미합니다. – asgs

+2

그것은 충분히 간단합니다 - 어떤 상징이라도, 0 번 이상 존재합니다 - 그러나 그 밑에는 뉘앙스가 있습니다. 게다가 정규 표현식의 핵심 개념입니다. 지금 나가서 정규 표현식에 대한 배경 지식을 읽으십시오. 그렇게하면 더 빨리, 더 빨리 얻을 수 있습니다. –

답변

6

각 케이스는 다르다 :

.*([a-m/]*).*

첫 번째 [a-m/]이 존재하는 필요하지 않기 때문에 .* 아마, 전체 문자열을 일치, 첫 번째 *이 욕심이 먼저 온다. .*([a-m/]+).*

첫 번째 .*

은 하나가 필요하기 때문에 [a-m/] 일치하는 마지막 문자까지 전체 문자열을 일치, 첫 번째 *는 욕심이 먼저 온다. *?이없는 욕심 때문에

.*?([a-m/]*).*

첫 번째 .*?[a-m/]과 일치하는 첫 번째 문자까지 문자열과 일치하는 것이다 + 다음 마지막 욕심, 그리고 있기 때문에, 다음 [a-m/]+, 그것은 할 수있는 모든 일치합니다 .*은 나머지 문자열과 일치합니다.

+0

멋지게 완료되었습니다. +1 – XIVSolutions

10

점은 여기 수있는 모든 것을 의미하고, 별은 너무 .* 빈 문자열을 포함한 모든 문자 시퀀스를 받아 적어도 0 번을 의미한다.

+2

어떻게하셨습니까? 당신은 '진짜 질문이 아닙니다'라고 대답했습니다. –

+0

@Thereisnothingwecando : "진짜 질문이 아닙니다 ... 10시 2 분 12 초 9시 38 분에". Ionut은 eariler에 답했습니다. (아직도 진짜 질문이었을 때 :)). –

4

. *는 "임의의 문자, 반복 횟수"를 의미합니다.

8

귀하의 예제에서. *의 기능은 포함 된 표현식이 무엇이든 (또는 아무것도) 둘러싸여 있지 않은지 확인하는 것입니다. 점은 임의의 문자를 나타내고 별표는 앞의 문자가 임의의 횟수만큼 반복 될 수 있다고 말합니다.