Scala 파서 결합 자와 일치하는 것을 반전시킬 수 있습니까? 이 아닌 파서와 행을 일치 시키려고 노력 중입니다.은 일련의 키워드로 시작합니다. 짜증나는 제로 너비의 룩어 헤드 정규 표현식 (예 : "(?!h1|h2).*"
)으로이 작업을 수행 할 수 있지만 스칼라 파서로 처리하는 것이 좋습니다. 내가 생각해 낼 수 있었던 가장 좋은 점은 다음과 같습니다.스칼라 파서 - 결합 자 : 어떻게 일치를 뒤집을 수 있습니까?
def keyword = "h1." | "h2."
def alwaysfails = "(?=a)b".r
def linenotstartingwithkeyword = keyword ~! alwaysfails | ".*".r
아이디어는 여기에서 ~를 사용합니다! all-matching regexp로 되돌아가는 것을 금지하고, 정규 표현식 "(? = a) b".r을 계속해서 사용합니다. (그런데 미리 정의 된 파서가 항상 실패합니까?) 그런 식으로 키워드가 발견되면 줄은 일치하지 않지만 키워드가 일치하지 않으면 줄은 일치합니다.
더 좋은 방법이 있는지 궁금합니다. 거기 있니?