2017-02-16 2 views
0

정규 표현식에 대해 나에게 001 일 이니 너무 어리석은 짓이라면 미안하다. 나는 약간의 연구를했지만 내 질문에 대한 답을 찾을 수 없다. 아마도 내가 잘못된 것을 찾고 있기 때문일 것입니다. 정규 표현식 와일드 카드

나는 거대한 .CVS 파일을하고 난 용어를 포함하는 모든 항목을 삭제하려면 :

Subscribe to Newsletter:   No 

의 항목이 균일하지 않습니다 - 이것에 의해 나는 희석 한

-- 

Anything could be here 

Subscribe to Newsletter:   No 

-- 

을 의미 이 .CSV 바로 아래로 정규 표현식을 사용하여 (내 생각 엔? 내가 할 수있는 모든 요소를 ​​삭제하려면 숭고 3에서 찾기 및 바꾸기를 사용하고있다.) 나는 거의 다 왔어. 내가 찾고있는 것은 내가 모르는 부분을 무시하기 위해 와일드 카드를 사용하는 방법입니다. 같은 :

^.*-- 

**wild-card** 

Subscribe to Newsletter:   No.*\n 

사람 내가이 일 한 그대로의로 사람이 바로 날 지점 수 만약 그렇다면 여기 떨어져 잘 수 있습니다 말했듯이, 멋진 될 것이라고이 작업을 수행하는 방법을 연구 할 수있는 추천 할 수있는 경우 그 방향은 좋을 것입니다!

+0

이미 회선에 대한 열 텍스트가있는 경우 간단히 '뉴스 레터 구독 : \ s * 아니요'로 검색하면 찾을 수 있습니다. – sln

+1

regex [regex101] (https://www.regex101.com)을 배우는 것은 훌륭한 자료입니다. 대화 형으로 패턴을 테스트하고 작동 방식을 정확하게 볼 수있는 인터페이스와 함께 구문에 대한 완벽한 지침을 제공합니다. –

+0

@sln 뉴스 레터 구독 라인 만 삭제할 수 있습니까? 전체 항목을 삭제하려고합니다. 문자열이 포함되어있는 경우 전체 항목을 쉼표에서 다음 항목으로 삭제하려면 해당 항목이 의미가 있습니까? –

답변

1

첫 번째 문제 : DOTALL 플래그를 사용하지 않는 경우 점 .은 줄 바꿈과 일치하지 않으므로 여러 줄에 걸쳐야합니다.

(?!--)은 점이 세그먼트 구분 기호 --과 일치하지 않는다고 주장해야합니다.

이 시도 :

(?s)^--((?!--).)*?Subscribe to Newsletter:\s+No((?!--).)* 

당신은 점이 활성화 DOTALL 플래그 (?s)과 일치하기 때문에, 후행 줄 바꿈을 필요 없어요.