2011-12-26 1 views
0

나는 10 자 (또는 그 이상)의 문자 '%'또는 '숫자'를 탐지하는 정규식을 만드는 데 도움을 찾고 있습니다. = '또는': '을 임의의 길이의 문자열로 사용하십시오.임의의 길이의 문자열에서 % 또는 = 또는 :의 수를 계산하는 정규 표현

는 지금까지, 나는 다음과 같은 소스를 확인했지만 내 요구에 게시 있었는지에 적응하는 것 같지 수 : 또한

, 내가 ' 다음 표현을 직접 시도했지만 내 문자열과 일치하지 않습니다.

  • /[%=:]{10,}/
  • /[a-zA-Z0-9](:|%|=){10,}/

하나는 도와 드릴 수 있습니다 (I은 일치를 확인하기 위해 "pcretest"를 사용하고)?

+2

사이트에 오신 것을 환영합니다. * 질문을 다시 게시하지 마십시오 *. 기존 질문 하단에 수정 링크가있어서 변경할 수 있습니다.귀하의 질문을 모두 병합 했으므로 답변이 한 곳에서 통합됩니다. 이 질문에 대한 답을 다시 수락해야 할 수도 있습니다. – BoltClock

답변

2

이 정규식은 문자열 (10)이있는 경우 일치 (또는 것)의 차이가 100 이상이면, 당신은 일치가 :

입력의 길이와 비교,이 변수의 길이를 계산 문자) 이상 : %=: 사이에 다른 문자의 번호 :

: 당신이 적어도 10를 포함하는 전체 문자열과 일치해야하는 경우

/(?:[^%=:]*[%=:]){10}/ 

이 하나를 사용

/^(?:[^%=:]*[%=:]){10}[\S\s]*$/ 

연속적인이어야하는지 말하지 않았습니다. 이 대답은 아니오라고 가정합니다.

+0

감사합니다. @ridgerunner - 예, 지금 제 악의적 인 에티켓에 대해 알고 있습니다. 나는 원래의 게시물을 삭제하고 싶었는데, 그 이유는 내가 어떤 연구를했음을 나타내지 않았고 대신 편집을 생각하지 않았기 때문이다. FWIW, 당신의 대답은 나를 도왔습니다. 고맙습니다. – James

+1

@ 제임스 - 문제 없습니다. 여기 주위에 로프를 배우는데도 시간이 걸렸습니다. BTW, 당신은 그것을 게시 한 후 귀하의 질문에 대한 귀하의 질문 (및 답변)을 편집 할 수 있습니다. 그리고 가장 좋은 대답을 결정하면 올바른 답으로 확인해야합니다. – ridgerunner

+0

@BoltClock - 내 중복 게시물을 삭제 해 주셔서 감사합니다. (그런 일이 일어 났는지는 잘 모르겠지만, 보통 나는 그런 것들을 아주 조심스럽게 생각합니다.) – ridgerunner

1

...

방법 :

/[%=:]{1000,}/ 

?

+0

'100' 이상 :-) 불행히도 일치하지 않는 –

+0

. 그 세 문자 중 * *를 100 번 이상 일치시켜야한다고 말하면 어떤 차이가 있습니까? – James

+1

@Fredrik 제목은 본문과 동의하지 않습니다 ("1k"와 "100"). 영업 사원은 어느 쪽이든 그것을 파악할 수 있어야합니다. –

0

입력 길이를 계산하십시오.

다음 대체 할 입력 변수 인 전역 변수는 [%=:]+입니다.

1
cnt = 0 
for each character in string: 
    if character is '%' or ':' or '=': 
     cnt++ 

    if cnt >= 10: # or 100 or 1000 
     SUCCESS 
     break 
+0

'cnt'가 10이 되 자마자 루프에서 빠져 나와 여분의 문자를 검사하지 않도록해야합니다. – jwodder

+0

사실, 업데이트하겠습니다. –

0
그것은 당신이 사용하고 정규되는 표현 엔진에 따라 달라집니다 만,이 일을해야

: 당신은 괄호를 탈출해야 프로그래밍 언어에 따라

/([%:=][^%:=]*){10,}/ 

및 선도적 인 백 슬래시 중괄호 (예 :).

선택한 문자 { '%', ':', '='} 중 하나와 일치하며, 선택적으로 그 세트에없는 문자 수 (10 회 이상)와 일치합니다.