1
따옴표로 묶은 부분 문자열 인 "/\"(?:[^\"\\]|\\.)*\"/"
(원래는 /"(?:[^"\\]|\\.)*"/
, Here 참조)과 일치하는 정규 표현식이 있습니다. regex101에서 테스트 한 결과 작동합니다. 방법 공동가 올바른 있습니까Haskell, regex, TDFA : 따옴표로 묶은 부분 문자열
*** Exception: Explict error in module Text.Regex.TDFA.String : Text.Regex.TDFA.String died:
parseRegex for Text.Regex.TDFA.String failed:"/"(?:[^"\]|\.)*"/" (line 1, column 4):
unexpected "?"
expecting empty() or anchor^or $ or an atom
: TDFA
와
, 그것은 구문입니까?
테스트 문자열 : Is big "problem", no?
예상 결과 : "problem"
UPD :
removeQuotedSubstrings :: String -> [String]
removeQuotedSubstrings str =
let quoteds = concat (str =~ ("/\"(?:[^\"\\]|\\.)*\"/" :: String) :: [[String]])
in quoteds
잘못된 정규 표현식을 사용하려고 생각합니다. AFAIR Posix ERE는'? :'를 지원하지 않습니다. 또한 실제 하스켈 구문을 보여주십시오. '\\.'는 하스켈의 백 슬래시 - 마침표로, RE 리터럴 - 마침표입니다. '/.../ '구분 기호는 무엇입니까? 그들은 정규식 구문의 일부가 아닙니다. –
슬래시를 제거하려고했으나 아무런 차이가 없었습니다. '? :'의 대용 물이 있습니까? 'TDFA'는 내 프로그램의 다른 곳에서 사용됩니다. UPD를 참조하십시오. –
시행 착오는 정규 표현식을 작동시키는 데 특히 유용한 방법이라고 생각하지 않습니다. 모든 단일 문자가 무엇을하고 있는지 정확하게 알고있는 것이 좋습니다. 백 슬래시를 제거 하시겠습니까? 왜 일부를 추가하지 않으시겠습니까? 이 응용 프로그램에서는 평범한 이전 캡처 그룹이 작업을 수행해야하므로 캡처하지 않는 그룹을 사용할 필요가 없습니다. –