2016-07-20 2 views
1

정말 녹색입니다. 나는 BlueJ를 사용하여 Java에서 실행하는 Notepad ++에서 작동하는 정규식을 얻으려고 노력하고 있지만 Java는 무시하고있는 것처럼 보입니다. 정규식을 사용하여 다른 replaceAll 함수를 사용하고 있으며 모든 함수가 작동 중입니다.자바는 BlueJ를 사용하여 중복 행을 제거하는 정규식을 무시합니다

나는 이것을 가지고,하지만 \ s이 (가) 불법 이스케이프 문자 나에게 말하고있다 :

itemList[i] = itemList[i].replaceAll("^(\s*\r\n){2,}", "\r\n"); 

내가 자바 엔진에 대해 읽고 \ S \에 지금이야 불법이 아니었다 변경 :

itemList[i] = itemList[i].replaceAll("^(\\s*\r\n){2,}", "\r\n"); 

대신 [[: space :]]를 사용했지만, 여전히 바꾸기 기능을 사용하지 않았습니다.

itemList[i] = itemList[i].replaceAll("^([[:space:]]*\r\n){2,}", "\r\n"); 

이 Java 도구는 수 백 줄을 처리하고 있으며 메모장 ++를 사용하여 중복 줄을 제거하는 데 문제가 있습니다. 서식 도구에서이 작업을 수행하면 문제가 해결 될 수 있다고 생각했습니다. 당신은 여러 모드를 사용할 필요가

1. Modification: No Error Message When SQL Server Down 

       S9# 395 


       Summary 

       No error message when the SQL Server is 
       down. 

       Workaround 

       There is currently no 
       workaround for this issue. The system will become 
       unusable if SQL server is down. 
+0

나는 당신을 도울 수있는 비슷한 스레드를 발견했다. /http : //stackoverflow.com/questions/1573361/find-duplicate-lines-and-remove-using-regular-expression-with-replace-feature – lsiva

+0

감사합니다. 나는 지금 그것을 읽고있다. – PatrickD

답변

1

, 그래서 ^ 어떤 라인의 시작을 일치시킬 수 있습니다 : 여기에 텍스트의 예입니다. 그렇지 않으면 전체 문자열의 시작 부분 만 찾습니다. 다중 행 모드는 대부분의 텍스트 편집기에서 기본값이지만, 다른 곳에서는 정규 표현식을 사용하면이를 지정해야합니다. 그냥 정규식의 시작 부분에 (?m)를 추가 : 자바 8을 실행하는 경우

(?m)^(\\s*\r\n){2,} 

, 나는이 대신 일을하는 것이 좋습니다 :

replaceAll("(?m)^(?:\\h*(\\R)){2,}", "$1") 

\s*가 모호, 그것은 줄 바꿈과 일치뿐만 아니라 수 있기 때문에 공백; \h은 가로 가로 공백 (예 : 공백 및 탭)에만 일치합니다.

\R 일치 뉴 라인의 종류 : \r\n, \n, \r, 또는 여러 가지 다른, 덜 일반적인 것들. 내부 그룹 인 (\R)은 여분의 줄 바꿈을 마지막으로 캡처하고 "$1"을 다시 연결합니다. 이렇게하면 누군가가 문서의 줄 바꿈 형식을 변경하면 아무런 불쾌감을 느끼지 않습니다.

+0

정말 고마워요, 매력처럼 작동합니다! 나는 하루를 읽으며 다른 일을 시도하면서이 일을 위해 열심히 노력해 왔습니다. 나는 너의 도움에 정말로 감사한다. – PatrickD

관련 문제