2013-03-24 3 views
1

다른 여러 대괄호/중괄호/괄호 ({{...}}, {...}, [...], [...] ], < ...>). 일부는 다른 사람의 안에 있습니다.자바 스크립트를 사용하여 대괄호 및 텍스트 제거

나는이 대괄호를 제거하기 위해 JS를 사용하고 싶습니다. (다른 대괄호 안에 들어 있지 않은 [[...]을 제외하고)이 대괄호를 지우고 그 안의 텍스트가 무엇이든간에이 경우에는 괄호 만 제거하고 싶습니다. . 여기

내가 함께 일하고 있어요 문자열 유형의 예입니다 :

{{PP-이동-indef}} {{Taxobox을 | name = 레드 팬더 | 상태 = VU | status_system = iucn3.1 | status_ref = | image = RedPandaFullBody.JPG | regnum = [[Animal]] ia | 문 = [[Chordate | Chordata]] | classis = [[Mammal]] ia | ordo = [[Carnivora]] | subordo = [[Caniformia]] | infraordo = [[Arctoidea]] | superfamilia = [[Musteloidea]] | familia = [[Ailuridae]] | 속 = Ailurus | genus_authority = [[Frederic Cuvier | F. Cuvier]], 1825 | 종 = A. fulgens | 이항 = Ailurus fulgens | binomial_authority = [[Frederic Cuvier | F. Cuvier]], 1825 | range_map = 사이 프론 범위 Ailurus fulgens.svg | range_map_caption = 레드 팬더 범위 | subdivision_ranks = 아종 | subdivision = A. f. fulgens
A. f. [히말라야]와 남서부 [중국]의 네이티브 인 [팬텀]은 빨간 팬더 (Ailurus fulgens, "빛나는 고양이"라고 불린다)는 작은 [수목 원생] 평가자 = Wang, X., Choudhry, A., Yonzon, P., Wozencraft, C., Than Z. | 2008 년 | id = 714 | taxon = Ailurus fulgens | version = 2010.4 | downloaded = 2010 년 6 월 26 일}}와 [[너구리]], [[스컹크]] 및 [[족제비]]와 관련이 있습니다. 그것은 Ailurus 속과 [Ailuridae] 가족의 현존하는 유일한 종이다. [domestic cat]보다 약간 크지 만, 붉은 갈색 모피, 길고 털이없는 꼬리, 앞발이 짧아지기 때문에 걷는 발걸음을합니다. 주로 [죽순 | 대나무]에 먹이를 먹지 만 잡식성이며 계란, 새, 곤충, 작은 포유류도 먹을 수 있습니다. 그것은 [[독방 동물]], 주로 [황혼에서 새벽까지 활발한] 야간에 주로 [좌식 생활 | 정주]입니다.

원하는 결과가

붉은 팬더 (Ailurus의 fulgens, 불 "고양이 빛나는"), 작은 교목 포유류는 너구리에 동부 히말라야와 중국 남서부 네이티브 및 관련입니다, 스컹크 족제비. 그것은 Ailurus 속과 Ailuridae 속의 현존하는 유일한 종이다. 국내 고양이보다 약간 크며, 붉은 갈색 모피, 길고 털이없는 꼬리, 짧은 앞다리 때문에 걷는 발걸음을합니다. 그것은 대나무에 주로 먹이를 먹지 만, 잡식성이며 계란, 새, 곤충, 작은 포유류도 먹을 수 있습니다. 독방 동물, 주로 황혼에서 새벽까지 활동하는 야행성이며 낮에는 주로 앉아있는 생활 방식입니다.

+0

당신이 지금까지 시도했던 방법을 게시하시기 바랍니다. 무엇이 효과가 없었고 정확히 어디에서 붙어 있었습니까? –

+0

'string.replace (some regex, '')'를 시도했지만 원하는 결과를 얻기에 충분하지 않습니다. 이 작업은'.replace()'로 할 수 있습니까? – user989990

+0

아, "중첩 된 대괄호"는 항상 연속일까요? 나는. 항상'{{...}} '이 될 것이지만'{... {...} ...}'이되지는 않을까요? –

답변

3
function removeBrackets(input) { 
    return input 
     .replace(/{.*?}/g, "") 
     .replace(/\[.*?\]/g, "") 
     .replace(/<.*?>/g, "") 
     .replace(/\(.*?\)/g, ""); 
} 
+2

이렇게하면'{{...}} '또는 다른 중첩 된 괄호 세트에 대한 결과가 손상됩니다. –

1

참고 :이 위 @Joseph 레녹스의 제안을 바탕으로.

function removeBrackets(input) { 
    return input 
     .replace(/{+.*?}+/g, "") 
     .replace(/\[\[|\]\]/g, "") 
     .replace(/<.*?>/g, ""); 
} 

...의 + 등, 우리가 {} {}로 흡수하자

+1

* "일부는 다른 사람 안에 있습니다"*는 입력이 {{{...} ...} '일 수 있음을 의미 할 수도 있습니다. 그러나 OP는이를 분명히해야합니다. –

+0

@FelixKling : 좋은 지적이지만,이 경우에는 해결되지 않습니다. –

+0

슬프게도 JS의 정규 표현식은 정규 표현식을 통해 이것을 불가능하게하는 재귀 적 지원이 부족합니다. 질문 묻는 사람은 매우 명확하지 않았고/아직도 그렇지 않습니다. 그래서 나는이 보트에서 누군가 뛰고있는 것을 의심합니다. –

관련 문제