주어진 파일의 모든 주석을 찾기 위해 정규식을 작성하려고합니다. 내가 처리해야 할 주석은 다음과 같은 다중 선 명령입니다.
/* comments.
is multiline comment*/
또는
// one liner comment.
나는 몇 군데를 검색했고 몇 가지 답을 찾았다. ( 하나의 답변 ) 그리고 나는 대부분의 요구에 답하는 것을 작성했습니다.
(/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/|//.*\n?)
내 코드에서 유일한 문제는 문자열 내부의 주석을 포착한다는 것입니다. 예를 들면
String str = " hey, // I'm not a comment "
내 코드는 "I 'm not a comment"를 받지만 그렇지 않아야합니다. 나는 부정적 예견과 예견과 같은 여러 가지를 시도했지만 아무것도 작동하지 않는 것 같습니다.
내가 원하는 것을 할 수있는 방법이 있나요? / 감사합니다.
편집 : 내가 사용하는 언어는 파이썬입니다.
일반적으로 (중첩 된 주석 등을 고려하기 위해) 대신 파서를 사용하는 것을 고려하십시오. 즉, (*SKIP)(*FAIL)
지원되는 경우 구성을 사용할 수 있습니다 (프로그래밍 언어를 지정하지 않음).
"[^"]+"(*SKIP)(*FAIL)
|
'[^']+'(*SKIP)(*FAIL)
|
(?|
//(?P<comment>.+)
|
/\*(?P<comment>[\s\S]+?)\*/
)
regex101.com에서 데모를 참조하십시오 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다