Friday, February 02, 2007
정규식] 줄바꿈 문자(개행문자; 엔터 키) 매치; CR-LF Enter Key Match Regex
정규식(Regex)에서 줄바꿈 문자는 유닉스 텍스트의 경우 "\n" 입니다. 그리고 원칙적으로 도스 텍스트는 "\r\n" 이렇게 표현하지만, "\n"으로도 도스 텍스트의 개행문자가 대부분 매치됩니다.
언어에 따라서, "\\n" 또는 "\\\\n" 이렇게 백슬래쉬(\)를 2개나 4개로 중복해 주어야 하는 경우도 있습니다.
펄(Perl) 정규식에서, 텍스트 파일 속의 줄바꿈 문자를 삭제하거나, 공백 등의 다른 문자로 치환하는 방법입니다: ▶▶ Perl/펄 정규식] 줄바꿈 문자 제거, 개행 문자 삭제; Text File Remove Newline (Enter Key)
다만 자바에서는 잘 되지 않았습니다. 그리고 정규식에서 개행문자를 매치시키는 것이 상당히 어렵습니다. 정규식은 개행문자 바로 직전까지의 문자열만 처리하는 것이 기본입니다.
다행히 펄의 정규식은 유연해서 개행문자도 쉽게 매치됩니다.
펄에서, 여러 개의 빈 줄을 하나의 빈줄로 치환하려면 다음의 방법으로 가능합니다: ▶▶ Perl/펄] 빈 줄 삭제, 중복된 빈 줄을 하나로 변환; Delete Empty Lines
이것은 정규식으로 하는 것은 아닙니다.
$ : 문자열의 끝을 의미 (개행문자가 아니라, 그냥 단순히 맨 마지막 문자)
\s : 공백문자(스페이스와 탭 포함)를 의미
+ : 1개 이상의 문자를 의미
따라서 \s+$ 는 "문자열 끝에 있는, 1개 이상의 공백문자(들)"를 의미합니다.
\s+$ 를 ''(홑따옴표 2개)로 치환해 주면, 문자열 끝의 불필요한 공백이 전부 사라지게 됩니다.
아래에 간단한 예제가 있습니다.
파일명: test.html
☞ 줄바꿈 | 개행 문자
언어에 따라서, "\\n" 또는 "\\\\n" 이렇게 백슬래쉬(\)를 2개나 4개로 중복해 주어야 하는 경우도 있습니다.
0x0A (LF; Newline Character) : \n
0x0D (CR; Carriage Return) : \r
0x0D (CR; Carriage Return) : \r
펄(Perl) 정규식에서, 텍스트 파일 속의 줄바꿈 문자를 삭제하거나, 공백 등의 다른 문자로 치환하는 방법입니다: ▶▶ Perl/펄 정규식] 줄바꿈 문자 제거, 개행 문자 삭제; Text File Remove Newline (Enter Key)
다만 자바에서는 잘 되지 않았습니다. 그리고 정규식에서 개행문자를 매치시키는 것이 상당히 어렵습니다. 정규식은 개행문자 바로 직전까지의 문자열만 처리하는 것이 기본입니다.
다행히 펄의 정규식은 유연해서 개행문자도 쉽게 매치됩니다.
펄에서, 여러 개의 빈 줄을 하나의 빈줄로 치환하려면 다음의 방법으로 가능합니다: ▶▶ Perl/펄] 빈 줄 삭제, 중복된 빈 줄을 하나로 변환; Delete Empty Lines
이것은 정규식으로 하는 것은 아닙니다.
문자열 끝 공백 문자 제거 예제 (자바스크립트 정규식으로)
문자열 끝에 있는 불필요한 공백 제거 작업을 영어로는 remove trailing white spaces 라고 합니다.$ : 문자열의 끝을 의미 (개행문자가 아니라, 그냥 단순히 맨 마지막 문자)
\s : 공백문자(스페이스와 탭 포함)를 의미
+ : 1개 이상의 문자를 의미
따라서 \s+$ 는 "문자열 끝에 있는, 1개 이상의 공백문자(들)"를 의미합니다.
\s+$ 를 ''(홑따옴표 2개)로 치환해 주면, 문자열 끝의 불필요한 공백이 전부 사라지게 됩니다.
아래에 간단한 예제가 있습니다.
파일명: test.html
<input type="text" id="output1" name="output1" value="" readonly="readonly" onclick="this.select()" onfocus="this.select()" style="width:300px;" />
<script type="text/javascript">
removeTrailingSpace();
function removeTrailingSpace() {
var str = "sss111 ss s sss ";
var result = str.replace(/\s+$/, '');
document.getElementById('output1').value = result;
}
</script>
<script type="text/javascript">
removeTrailingSpace();
function removeTrailingSpace() {
var str = "sss111 ss s sss ";
var result = str.replace(/\s+$/, '');
document.getElementById('output1').value = result;
}
</script>
☞ 줄바꿈 | 개행 문자
tag: regex
정규식 | 정규표현식 | Regex | Regular Expression
tag: editor
텍스트 에디터 | 문서 편집기 | Text Editor
tag: html
HTML | CSS | 자바스크립트 JavaScript
안녕하세요. 좋은 글 잘 읽었습니다. 제가 게시판을 운영중인데요 제 게시판이 IE에서 WYSWYG 에디터로 태그를 입력 후 에디터 모드를 텍스트와 위지윅으로 서로 전환하다 보면 줄끝에 공백하나가 붙는데 이 공백을 없애려다 보니 "공백+줄바꿈문자" 을 찾아서 "줄바꿈문자" 로 치환해 주려고 하는데 잘 안됩니다.
저 같은 경우는
var iePattern3 = / ([\r|\n])/g;
str = str.replace(iePattern3,"$1");
이와 같이 했는데 동작하지를 않아서 혹시 도움을 얻을 수는 없을까 해서 이렇게 덧글 남깁니다.
줄끝 공백만 제거하면 되지 않을까요.
줄끝 공백 제거 방법을
방금 게시물 끝에 올렸습니다.
제가 방금 덧글 내용과 본문 수정된 내용을 봤는데요 며칠전 고민하다가 영문 사이트를 보고 해결법을 찾았는데 제가 사용한 방법과 달라서 이렇게 다시 덧글을 달게 되었습니다.
mwultong 님이 제시한 방법은 str 변수 안에 문자열 여러 줄이 걸쳐 있고 각 줄 맨 끝에 공백이 있을 경우 str 맨 끝 공백을 그냥 없애주는 정규식입니다. 즉 이전 줄의 공백은 제거되지 않는다는 거지요. 그리고 맨끝 공백부분의 개행문자까지 제거되구요.
제가 찾는 방법은 개행 문자로 구분된 여러 줄에서 각 줄 끝에 "공백한개"+"개행문자" 를 찾아 "공백한개" 를 제거하는 정규식이었습니다. 방법은...
var iePattern3 = / (?:\r\n|\r|\n)/g;
str = str.replace(iePattern3,"");
이렇게 해줘야 여러 줄로 돼 있는 str 변수에서 개행문자 바로 이전에 있는 공백 한개를 모두 없앨 수 있습니다.
답변 감사드리며 자바스크립트 정규식을 이해하는데 더한층 도움이 되었네요. 오늘도 좋은 하루 되세요. ^^;
좋은 정보 감사합니다^_^
<< Home