2012-05-23 8 views
1

정규 표현식을 작성하려고했지만 지금까지 성공하지 못했습니다.파이썬에서 정규 표현식을 작성했습니다

_ any thing\_ fdfdf \_ any thing_ 

밑줄 문자가 _까지.

\_은 이스케이프 문자이므로 정규 표현식에서 이와 같은 문자열을 받아 들여야합니다.

_ any \_ thing _ 

다음 문자열 :

checking_ happens \_ ano\_ther _ test of bold _ and escape \_asteric 

는 제공해야합니다 :이 작업을 수행

(\\_)|_[^_]*[\\_]*[_] 
+2

입력 및 원하는 출력에 대해 더 명확히 할 수 있습니까? –

+0

좀 더 구체적으로 알려주시겠습니까? _ 어떤 _ thing _이 (가) _ 모든 물건 _ ** 또는 ** 모든 ** **을 반환하도록 하시겠습니까? – fulmicoton

+2

stackoverflow markdown에 문제가 있습니까? 4 개의 공백을 들여 쓰면 공백은 밑줄이나 백 슬래시에 닿지 않습니다. – Eric

답변

2

:

_ happens \_ ano\_ther _ 

지금까지 나는이 가지고 올 경우에만 수 있어요 직업 :

(?<!\\)(?:\\\\)*_((?:[^_\\]|\\.)+)_ 

것은 그것을 깨는 :

  • (?<!\\)(?:\\\\)* - 더 백 슬래시
  • _가 선행되지 백 슬래시의 짝수를 일치 - 1을 다음 또는 중 하나를 일치 -
  • ((?:[^_\\]|\\.)+) 밑줄 다음에 번 더
    • [^_\\] - 밑줄 또는 백 슬래시를 제외한 모든 문자
    • \\. - 백 슬래시/문자 쌍 (예 : \_ 또는 \\)
  • _는 - 후행 일치 첫 번째 그룹에 밑줄 사이의 문자열을 캡처합니다

이을 강조.

+0

다시 한번 감사드립니다. @Eric. (?

+0

'(? : ...)'은 (...)와 같지만 캡처 그룹을 만들지 않습니다. 또한, 나는 처음에는''\\''을 무시하지 않는다.'\\ _ test _'는 실패 할 것이다. – Eric

+0

@hajidon : 이제'\\ _ test_'와'\\\\ _ test_'에서 작동합니다. 앞의 백 슬래시와 일치합니다. – Eric

관련 문제