소프트웨어 정규식 고수님들...
2021.10.20 17:39
영문 이름..
예를 들어..
P a r k, C h a n H o 이것을
Park, Chan Ho 이렇게 바꾸는 정규식은 어떻게 하면 될까요.
고수님들의 고견 기대합니다.
댓글 [10]
-
메리아 2021.10.20 22:19
-
줄리아니 2021.10.20 22:58
윗분 말씀대로 공백을 제거한후
찾기:
([A-Z](?:[a-z\,]+?))([A-Z](?:[a-z]+?))([A-Z](?:[a-z]+?))
바꾸기:
$1 $2 $3
-
kernel 2021.10.21 01:03
C++로 간단하게 구현해보면...
#include <string>
#include <regex>
#include <iostream>
using namespace std;
int main()
{
string s = "P a r k, C h a n H o";
cout << regex_replace(regex_replace(s, regex("\\s+"), ""), regex("(\,)([^]*)"), ", $2");
return 0;
}
-
kernel 2021.10.21 01:06
입력: P a r k, C h a n H o
출력: Park, ChanHo
-
kernel 2021.10.21 01:21
-
딕맨 2021.10.21 09:04
이름만 있다면 간단히
공백(소문자) 를 잡아서 소문자만 되돌리면 되는데
이름이 아닌 다른 것도 구분해야 한다면 이 방법은 안되겠네요.
-
zerozone 2021.10.21 09:19
보시는 대로 이름만 있습니다..
-
zerozone 2021.10.21 09:19
여러 고수님들의 소중한 의견 감사드립니다.
-
지후빠 2021.10.21 12:21
emeditor - ctrl+h (바꾸기) 에서 다음처럼 해보시겠습니까?
-
zerozone 2021.10.21 13:50
와~ 대박!!!
정말 감사합니다.
잘 되요^^
솔직히 정규식이든 뭐든 어려워 보입니다.
문자 다음에 공백이 있는 캡쳐 자체는 어렵지 않습니다.
그런데
C h a n H o
를 예를들면
C 다음의 공백과
n 다음의 공백의 결과가 달라야하는데
이건 어떻게 구분할까요?
사실상 어렵지 않나 싶습니다.
다만
C h a n H o 가 아니라
C h a n H o 라는 식으로 정확한 구분이 있다면
/(\w) /g
이런식으로 캡쳐해서
replace할때
첫번째 그룹인 $1 만 들어가도록 하면 공백은 잘 빠져 나갈겁니다.
참고로 정규식 테스트하기 좋은곳은
https://regexr.com/
이곳을 저는 애용합니다.