matlab
애증의 정규식... 3탄
게으른 the lazy
2024. 8. 22. 21:52
이 글은 정규식 삽질의 기록이며, 나중에 내가 같은 패턴을 쓸 일이 있을 때 찾아보기 위함이다.
게으른 매트랩 인덱싱 파트를 쓰던 도중, 애증의 정규식 1탄에서 걱정했던 일이 발생했다. 마크다운에서 헤딩 텍스트에 한글이 들어가면 링크에서는 없애야 한다. 정확히는,
1. 숫자와 알파벳, 즉 alphanumeric는 그대로 남긴다.
2. 그 외의 문자는, alphanumeric 사이에 있는 것들은 묶어서 하이픈 하나로 바꾼다.
3. Trailing 하이픈은 모두 없애버린다.
이게 말로 하면 좀 어려운데, 쉽게 말해 아래처럼 바꾼다.
123가나다abc → 123-abc
1가2나3다 → 1-2-3
가나다a123bc → a123bc
즉, 남길 문자 사이에 non-alphanumeric이 몇 개 있든 하이픈 하나로 바꾸고, 맨 앞과 맨 뒤의 하이픈은 모두 없애야 한다.
챗gpt에게 순서대로 물어봤다.
1. 숫자와 알파벳 외에 모두 하이픈으로 바꾸려면 어떻게 해야 해?
str = 'Hello, World! 123';
newStr = regexprep(str, '[^a-zA-Z0-9]', '-');
disp(newStr);
2. Trailing 하이픈을 모두 없애고 싶어.
str = 'Hello-World---';
newStr = regexprep(str, '-+$', '');
disp(newStr);
여기서,
• +는 하이픈 1개 이상을 말한다.
• $는 그걸로 끝나는 패턴을 말한다.
이렇게 하고 나니 연속된 하이픈을 바꾸는 것은 아래처럼 하면 되겠다 싶어서 그대로 응용했다.
str = 'Hello-World---';
newStr = regexprep(str, '-+', '-');
disp(newStr);
잘 된다.
여기까지 하고 나니, 어쩌면 이 모든 것을 한번에 할 수도 있을까 싶었다. 물어봤다.
이해를 포기했다.
끗