2010-02-07 3 views
3

피렌체 사람까지만 끝내는 모든 것만 자르고 싶습니다. 그 의미는 모든 라이센스를 끊어 버렸습니다.이중 꺾쇠 괄호로 묶인 블록을 제거하는 정규식

표현을 쓰는 방법은 무엇입니까?

이 특정한 경우에, 나는 "단지이 특정 입력"을 의미하는에 의해
<<THIS ELECTRONIC VERSION OF THE COMPLETE WORKS OF WILLIAM 
SHAKESPEARE IS COPYRIGHT 1990-1993 BY WORLD LIBRARY, INC., AND IS 
PROVIDED BY PROJECT GUTENBERG ETEXT OF ILLINOIS BENEDICTINE COLLEGE 
WITH PERMISSION. ELECTRONIC AND MACHINE READABLE COPIES MAY BE 
DISTRIBUTED SO LONG AS SUCH COPIES (1) ARE FOR YOUR OR OTHERS 
PERSONAL USE ONLY, AND (2) ARE NOT DISTRIBUTED OR USED 
COMMERCIALLY. PROHIBITED COMMERCIAL DISTRIBUTION INCLUDES BY ANY 
SERVICE THAT CHARGES FOR DOWNLOAD TIME OR FOR MEMBERSHIP.>> 


ALLS WELL THAT ENDS WELL 

by William Shakespeare 


Dramatis Personae 

    KING OF FRANCE 
    THE DUKE OF FLORENCE 
    BERTRAM, Count of Rousillon 
    LAFEU, an old lord 
    PAROLLES, a follower of Bertram 
    TWO FRENCH LORDS, serving with Bertram 

    STEWARD, Servant to the Countess of Rousillon 
    LAVACHE, a clown and Servant to the Countess of Rousillon 
    A PAGE, Servant to the Countess of Rousillon 

    COUNTESS OF ROUSILLON, mother to Bertram 
    HELENA, a gentlewoman protected by the Countess 
    A WIDOW OF FLORENCE. 
    DIANA, daughter to the Widow 


    VIOLENTA, neighbour and friend to the Widow 
    MARIANA, neighbour and friend to the Widow 

    Lords, Officers, Soldiers, etc., French and Florentine 



<<THIS ELECTRONIC VERSION OF THE COMPLETE WORKS OF WILLIAM 
SHAKESPEARE IS COPYRIGHT 1990-1993 BY WORLD LIBRARY, INC., AND IS 
PROVIDED BY PROJECT GUTENBERG ETEXT OF ILLINOIS BENEDICTINE COLLEGE 
WITH PERMISSION. ELECTRONIC AND MACHINE READABLE COPIES MAY BE 
DISTRIBUTED SO LONG AS SUCH COPIES (1) ARE FOR YOUR OR OTHERS 
PERSONAL USE ONLY, AND (2) ARE NOT DISTRIBUTED OR USED 
COMMERCIALLY. PROHIBITED COMMERCIAL DISTRIBUTION INCLUDES BY ANY 
SERVICE THAT CHARGES FOR DOWNLOAD TIME OR FOR MEMBERSHIP.>> 
+0

? 정규 표현식에는 많은 방언이 있습니다. –

+0

regexp를 사용하면 과장된 느낌이 들게됩니다. 예를 들어, 파이썬'txt.split (">>", 1) [1] .split ("<<") [0]'은 아마 더 효율적입니다. – Kimvais

+0

@MArk Byers - JAVA – Atom

답변

3

, 당신은 그것을 일치 수 :

>>([^<]+)<<

있는지 확인하십시오 당신이 일치하는 지원을 사용하는 어떤 구현 처음에는 문자열이 아니라 문자열의 중간에 위치합니다. 괄호는 캡처 그룹을 나타냅니다. 해당 그룹에없는 테스트를받을 필요가있는 경우

, 당신은 사용할 수 있습니다

([^>]+>>)[^<]+(<<[.]+)

지금, 두 캡처 그룹은 원하는 텍스트를 가지고있다.

편집 : 자바를 사용하고 있으므로 첫 번째 경우는 Matcher.matches()이 아닌 Matcher.find()을 사용해야합니다. 단지 < < 안에 주석을 제거에

0

은보다 유연 수 있습니다 * >> 펄에서

:. 당신이 사용하는 어떤 언어 나 도구

$string =~ s/<<.*?>>//g 
관련 문제