괄호와 대괄호로 중첩 된 패턴을 추출하는 정규식

nlper

나는 가지고있다

(LEFT-WALL)(who)(is.v)(Obama)(,)(I.p)(love.v)(his)(speech.s)(RIGHT-WALL)

일종의 패턴으로 나눠서 목록에있는 각 괄호 항목을 가져옵니다. 내 정규식은 잘 작동하지만 (Ob (am) a)와 같은 중첩 텍스트의 경우

예:

post_script_word_str = '(LEFT-WALL)(who)(is.v)(Obama)(,)(I.p)(love.v)(his)(speech.s)(RIGHT-WALL)'
post_script_word_list = re.compile(r'\(([^\)\(]*)\)').split(post_script_word_str)
print post_script_word_list

post_script_link_str = '[0 12 4 (RW)][0 7 3 (Xx)][0 1 0 (Wd)][1 2 0 (Ss)][2 6 2 (Ost)][3 6 1 (Ds)][3 4 0 (La)][5 6 0 (AN)][7 8 0 (Wq)][8 9 0 (EAh)][9 10 0 (AF)][10 11 0 (SIs)]'
post_script_link_str = re.compile(r'\[([^\]\[]*)\]').split(post_script_link_str)
print post_script_link_str

결과:

    ['', 'LEFT-WALL', '', 'who', '', 'is.v', 'Obama', ',', '', 'I.p', '', 'love.v', '', 'his', '', 'speech.s', '', 'RIGHT-WALL', '']

['', '0 12 4 (RW)', '', '0 7 3 (Xx)', '', '0 1 0 (Wd)', '', '1 2 0 (Ss)', '', '2 6 2 (Ost)', '', '3 6 1 (Ds)', '', '3 4 0 (La)', '', '5 6 0 (AN)', '', '7 8 0 (Wq)', '', '8 9 0 (EAh)', '', '9 10 0 (AF)', '', '10 11 0 (SIs)', '']

그러나 같은 입력 (Ob(am)a)또는 [0 [1]2 4 (RW)]실패합니다. 위와 같은 결과를 기대하지만

['', 'LEFT-WALL', '', 'who', '', 'is.v', '(Ob', 'am', 'a)', ',', '', 'I.p', '', 'love.v', '', 'his', '', 'speech.s', '', 'RIGHT-WALL', '']

['[0 ', '1', '2 4 (RW)]', '0 7 3 (Xx)', '', '0 1 0 (Wd)', '', '1 2 0 (Ss)', '', '2 6 2 (Ost)', '', '3 6 1 (Ds)', '', '3 4 0 (La)', '', '5 6 0 (AN)', '', '7 8 0 (Wq)', '', '8 9 0 (EAh)', '', '9 10 0 (AF)', '', '10 11 0 (SIs)', '']

어떠한 제안?

업데이트 된 입력 :

post_script_link_str = '[0 [1]2 4 (RW)][0 7 3 (Xx)][0 1 0 (Wd)][1 2 0 (Ss)][2 6 2 (Ost)][3 6 1 (Ds)][3 4 0 (La)][5 6 0 (AN)][7 8 0 (Wq)][8 9 0 (EAh)][9 10 0 (AF)][10 11 0 (SIs)]'

결과 :

['[0 ', '1', '2 4 (RW)]', '0 7 3 (Xx)', '', '0 1 0 (Wd)', '', '1 2 0 (Ss)', '', '2 6 2 (Ost)', '', '3 6 1 (Ds)', '', '3 4 0 (La)', '', '5 6 0 (AN)', '', '7 8 0 (Wq)', '', '8 9 0 (EAh)', '', '9 10 0 (AF)', '', '10 11 0 (SIs)', '']
카시미르와 히 폴리 테

re 모듈은 중첩 된 구조를 처리 할 수 ​​없습니다. 재귀 기능이있는 새 정규식 모듈 을 사용해야합니다 . 제쳐두고,이 findall방법이이 작업에 더 적합 하다고 생각합니다 .

regex.findall(r'\[([^][]*+(?:(?R)[^][]*)*+)]', post_script_link_str)

다음을 획득합니다.

['0 [1]2 4 (RW)', '0 7 3 (Xx)', '0 1 0 (Wd)', '1 2 0 (Ss)', '2 6 2 (Ost)', '3 6 1 (Ds)', '3 4 0 (La)', '5 6 0 (AN)', '7 8 0 (Wq)', '8 9 0 (EAh)', '9 10 0 (AF)', '10 11 0 (SIs)']

이제 필요한 것은 목록을 매핑하여 대괄호를 제거하는 것입니다.

패턴 세부 사항 :

(?R) 전체 패턴에 대한 별칭이므로 재귀를 허용합니다.

*+소유 한정사입니다. 동일 *하지만 정규식 엔진이 역 추적하는 것을 허용하지 않습니다. 불행히도 대괄호가 균형을 이루지 않으면 치명적인 역 추적을 방지하기 위해 여기에서 사용됩니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

치명적인 역 추적; 중첩 된 대괄호에서 값을 추출하기위한 정규식

분류에서Dev

정규식 : 괄호 안에있는 모든 것을 캡처하고 중첩 된 괄호도 캡처합니다.

분류에서Dev

중첩 된 괄호를 제거하는 정규식

분류에서Dev

대괄호로 키 값을 추출하는 정규식

분류에서Dev

'!'로 구분 된 단어와 일치하는 정규식 중괄호 '{' '}'로 묶임

분류에서Dev

중첩 중괄호 내부 값을 가져 오는 정규식

분류에서Dev

중첩 된 괄호에 대한 Java 정규식

분류에서Dev

정규식 : 괄호로 분할 따옴표 안의 중첩 된 괄호 무시

분류에서Dev

정규식으로 중첩 된 괄호 찾기

분류에서Dev

그것은 재귀를 사용하거나 그룹을 균형없이 정규식 중첩 된 괄호와 일치 할 수 있습니까?

분류에서Dev

중첩 된 괄호가있는 괄호 간 표현식 일치

분류에서Dev

괄호 안에 중첩 된 매개 변수를 추출하기위한 정규식

분류에서Dev

중첩 된 대괄호를 사용할 때 egrep과 함께 역 참조를 사용하는 정규식

분류에서Dev

괄호 나 중첩 된 괄호 안에없는 쉼표를 가져 오는 perl 정규식

분류에서Dev

이중 중괄호에 대한 Java 정규식 패턴

분류에서Dev

중괄호 사이의 정규식 패턴 추출 문자열 및 중괄호 제외

분류에서Dev

정규식을 깨는 대괄호?

분류에서Dev

중괄호와 일치하는 vbscript 정규식 표현식

분류에서Dev

괄호 안의 쉼표로 구분 된 숫자를 추출하는 정규식

분류에서Dev

대괄호로 정규식을 작성하는 방법

분류에서Dev

숫자 쌍을 대괄호로 묶는 정규 표현식

분류에서Dev

재귀가있는 쉼표로 구분 된 균형 대괄호와 일치하는 정규식

분류에서Dev

서로 옆에있는 정규식 대괄호 및 대괄호

분류에서Dev

대괄호 안의 중괄호 안의 문자열을 일치시키는 정규식

분류에서Dev

대괄호 안의 중괄호 안의 문자열을 일치시키는 정규식

분류에서Dev

PHP 및 정규식 : 문자열이 대괄호로 패턴을 따르는 지 확인

분류에서Dev

괄호 안에 쉼표로 구분 된 값을 찾는 정규식

분류에서Dev

대괄호 안의 쉼표와 공백을 제거하는 정규식

분류에서Dev

GNU awk는 정규식에서 중괄호를 사용하여 지정된 간격을 허용합니까?

Related 관련 기사

  1. 1

    치명적인 역 추적; 중첩 된 대괄호에서 값을 추출하기위한 정규식

  2. 2

    정규식 : 괄호 안에있는 모든 것을 캡처하고 중첩 된 괄호도 캡처합니다.

  3. 3

    중첩 된 괄호를 제거하는 정규식

  4. 4

    대괄호로 키 값을 추출하는 정규식

  5. 5

    '!'로 구분 된 단어와 일치하는 정규식 중괄호 '{' '}'로 묶임

  6. 6

    중첩 중괄호 내부 값을 가져 오는 정규식

  7. 7

    중첩 된 괄호에 대한 Java 정규식

  8. 8

    정규식 : 괄호로 분할 따옴표 안의 중첩 된 괄호 무시

  9. 9

    정규식으로 중첩 된 괄호 찾기

  10. 10

    그것은 재귀를 사용하거나 그룹을 균형없이 정규식 중첩 된 괄호와 일치 할 수 있습니까?

  11. 11

    중첩 된 괄호가있는 괄호 간 표현식 일치

  12. 12

    괄호 안에 중첩 된 매개 변수를 추출하기위한 정규식

  13. 13

    중첩 된 대괄호를 사용할 때 egrep과 함께 역 참조를 사용하는 정규식

  14. 14

    괄호 나 중첩 된 괄호 안에없는 쉼표를 가져 오는 perl 정규식

  15. 15

    이중 중괄호에 대한 Java 정규식 패턴

  16. 16

    중괄호 사이의 정규식 패턴 추출 문자열 및 중괄호 제외

  17. 17

    정규식을 깨는 대괄호?

  18. 18

    중괄호와 일치하는 vbscript 정규식 표현식

  19. 19

    괄호 안의 쉼표로 구분 된 숫자를 추출하는 정규식

  20. 20

    대괄호로 정규식을 작성하는 방법

  21. 21

    숫자 쌍을 대괄호로 묶는 정규 표현식

  22. 22

    재귀가있는 쉼표로 구분 된 균형 대괄호와 일치하는 정규식

  23. 23

    서로 옆에있는 정규식 대괄호 및 대괄호

  24. 24

    대괄호 안의 중괄호 안의 문자열을 일치시키는 정규식

  25. 25

    대괄호 안의 중괄호 안의 문자열을 일치시키는 정규식

  26. 26

    PHP 및 정규식 : 문자열이 대괄호로 패턴을 따르는 지 확인

  27. 27

    괄호 안에 쉼표로 구분 된 값을 찾는 정규식

  28. 28

    대괄호 안의 쉼표와 공백을 제거하는 정규식

  29. 29

    GNU awk는 정규식에서 중괄호를 사용하여 지정된 간격을 허용합니까?

뜨겁다태그

보관