2013-02-07 1 views
0
fadjfl (10) fdaf 
fadjfl dafhaj (10) 
fadjfl dafhaj 34 (10) 
fadjfl dafhaj 34 dafads  (10) 
fadjfl dafhaj 34 dafa(ds) (( (10) 
fadjfl 
fadjfl dafhaj 
fadjfl dafhaj 34 
fadjfl dafhaj 34 dafads  
fadjfl dafhaj 34 dafa(ds) ((

내가 모든 것을 선택합니다 정규식이 필요하지만 (10) 당신이 "(10)" 때까지 각 라인업의 시작 부분에서 일치시킬 것을 의미하는 경우일치 모든

+1

어떤 도구를 사용하고 있습니까? (이 경우에는 특히 중요합니다.) – JDB

+0

자바 스크립트에서 필요합니다 – user1750290

답변

3

어쨌든 cs.stackexchange.com에 속한 정규식에 대한 이론적 질문을하지 않으려면 항상 구현 (PHP, Javascript, .NET 등)을 지정해야합니다. 당신은 단지 \(\d+\) 전에 문자열을 원하는 경우

는,하지만 당신을 시작하려면 :

(.*?)(?:\(\d+\)|$) 

모든 것을 원하는 경우 여러 괄호 숫자를 가질 수 있다면, 그건 정말 수 없습니다. 유한 번호 인 과 같이 가능합니다. 3 :

(.*?)(?:\(\d+\)|$)(.*?)(?:\(\d+\)|$)(.*?)(?:\(\d+\)|$) 

는 .NET을 사용하지 않는 :

((.*?)(?:\(\d+\)|$))* 

GroupCollection을 통해 어떤 당신은 사이클을 할 수 후.

+0

+1 대부분의 엔진에서 작동 할 수있는 보편적 인 접근 방식입니다. 일치를 추출하려면 추가 코드가 필요합니다. – JDB

1

다음에 각 줄의 끝에, 당신은 lookaheads 할 수있는 도구를 사용하는 가정이 같은 것을 사용할 수 있습니다

.*?(?=\(10\)|$) 

그것은 다음과 같은 문자가 "(10)"을 때까지 모든 것을 일치하지 않습니다 (하지만 것이다 것 t는 "(10)"을 포함) 또는 줄의 끝에 도달했습니다. 이 경우 욕심이없는 한정 기호 (.*?)를 사용하는 것이 중요합니다. 그렇지 않으면 정규식이 매번 전체 행과 일치하게됩니다. 당신은 당신이 "(10)" 다음 당신은 쉽게 """(10)" 대체 기능을 대체 문자열의 모든 종류를 사용할 수를 제외하고 전체 문서를 일치시킬 것을 의미하는 경우

.

+0

시도해 보았습니다. fasjfl 이하에서 작동하지 않습니다. – user1750290

+0

@ user1750290 - 업데이트 – JDB

1

match() 무언가 이 아닌은 매우 복잡합니다. 대신 원하지 않는 부분을 제거하십시오.

myStr.replace(/\(\d+\)/, "") 
myStr.split(/\(\d+\)/) 
관련 문제