티스토리 뷰
이 글은 정규식 삽질의 기록이며, 나중에 내가 같은 패턴을 쓸 일이 있을 때 찾아보기 위함이다.
과제 1. 마크다운 헤딩이 2단계일 때에도 잘 변환해야 한다.
- Heading level 1은 숫자가 안 들어가므로 추가해줘야 한다.
- 그 이하의 level은 숫자가 들어가므로 그대로 두어도 된다.
예시)
>[간단한 출력: disp]
>[포맷팅 출력: fprintf]
>>[2.1 formatSpec]
>>[2.2 변환 문자]
>>[2.3 이스케이프 문자]
>[format으로 출력 표시 형식 지정]
를 아래처럼 바꿔야 한다.
>[1. 간단한 출력: disp]
>[2. 포맷팅 출력: fprintf]
>>[2.1 formatSpec]
>>[2.2 변환 문자]
>>[2.3 이스케이프 문자]
>[3. format으로 출력 표시 형식 지정]
headings = regexp(txt, '>\[(.*?)\]', 'tokens');
numbering = 0;
for i = 1:length(headings)
if isempty(regexp(headings{i}{1}, '^[0-9].[0-9]', 'once'))
numbering = numbering + 1;
txt = replace(txt, ...
sprintf('>[%s]', headings{i}{1}), ...
sprintf('>[%d. %s]', numbering, headings{i}{1}));
end
end
* Heading level 1의 인덱스는 Heading level 2의 개수와 별도로 올라가야 함에 주의.
과제 2. 마크다운 바로가기 추가 수정
- 넘버링 내의 dot은 하이픈이 아니라 아예 없애야 한다.
- 대문자는 소문자로 바꾼다.
예시)
>[간단한 출력: disp](#updateTitle=...)
>[포맷팅 출력: fprintf](#updateTitle=...)
>>[2.1 formatSpec](#updateTitle=...)
>>[2.2 변환 문자](#updateTitle=...)
>>[2.3 이스케이프 문자](#updateTitle=...)
>[format으로 출력 표시 형식 지정](#updateTitle=...)
를 아래처럼 바꿔야 한다.
>[1. 간단한 출력: disp](#1-disp)
>[2. 포맷팅 출력: fprintf](#2-fprintf)
>>[2.1 formatSpec](#21-formatspec)
>>[2.2 변환 문자](#22)
>>[2.3 이스케이프 문자](#23)
>[3. format으로 출력 표시 형식 지정](#3-format)
% heading 다시 따고
headings = regexp(txt, '>\[(.*?)\]', 'tokens');
% alphanumeric만 남기고 전부 -로 바꿈
% alphanumeric 사이에는 - 하나만
% trailing -는 모두 없앰
% 넘버링 내의 dot은 모두 없앰 (첫번째 공백 이전의 모든 dot을 없앰)
% 알파벳은 모두 소문자로
for i = 1:length(headings)
numbering = getfield(split(headings{i}{1}), {1});
numbering = regexprep(numbering{1}, '\.$', '');
newnumbering = replace(numbering, '.', '');
headings{i}{1} = replace(headings{i}{1}, numbering, newnumbering);
headings{i}{1} = regexprep(headings{i}{1}, '[^a-zA-Z0-9]', '-');
headings{i}{1} = regexprep(headings{i}{1}, '-+', '-');
headings{i}{1} = regexprep(headings{i}{1}, '-+$', '');
headings{i}{1} = lower(headings{i}{1});
end
과제 3. 이미지 폴더명 일괄 변경
- 이미지 저장 폴더명을 fig_ch01_s01에서 fig_0101로 변경하고 싶었다.
d = dir('fig_*');
for i = 1:length(d)
num = regexp(d(i).name, '[0-9]{2}', 'match');
newname = sprintf('fig_%s%s', num{1}, num{2});
movefile(d(i).name, newname)
end
'matlab' 카테고리의 다른 글
BPM 측정기 및 메트로놈 (0) | 2024.09.10 |
---|---|
애증의 정규식... 3탄 (0) | 2024.08.22 |
hgtransform을 이용하여 이미지 회전시키기 (0) | 2024.08.14 |
강아지 다이어트 (0) | 2024.08.06 |
매트랩 콰인 (0) | 2024.08.06 |