
나는 그 안에 무작위 수의 공백이 있는 30,000줄의 텍스트를 가지고 있습니다. 각 줄의 첫 번째 SPACE에만 문자를 추가해야 합니다. 무엇이든 제안할 수 있는 사람이라면 누구나 크게 감사하겠습니다.
답변1
- Ctrl+H
- 무엇을 찾다:
^\S+\h\K
- 다음으로 교체:
%
- 둘러보기 확인
- 정규식 확인
- Replace all
설명:
^ # beginning of line
\S+ # 1 or more non space
\h # 1 horizontal space
\K # forget all we've seen until this position
대사:
% # the character to insert
주어진:
I have 30,000 lines of text that have randon
number of spaces in them. I need to add a character
to just the first SPACE in each line.
Any who can suggest anything would be
greatly appreciated.
주어진 예에 대한 결과:
I %have 30,000 lines of text that have randon
number %of spaces in them. I need to add a character
to %just the first SPACE in each line.
Any %who can suggest anything would be
greatly %appreciated.
답변2
TextPad를 사용해 보세요. 매크로를 기록한 다음 재생할 수 있습니다. 따라서 첫 번째 줄에 수행할 작업을 기록하고 첫 번째 줄을 완료한 후 커서를 다음 줄의 시작 부분에 두십시오. 그런 다음 파일이 끝날 때까지 매크로를 재생하면 됩니다. 아니면 재생 매크로 키를 누르고 있으면 됩니다.
답변3
당신이 찾고있는 것은 정규 표현식입니다. 가장 먼저 하고 싶은 일은 검색을 정규식으로 바꾸는 것입니다.
이 문제를 해결하는 방법을 정확히 알고 있다고 생각해서 기쁘네요.
https://regex101.com/r/aW4gG2/1
원하는 표현식은 다음과 같습니다.
찾기: (^.*?)( )
바꾸기:\1#\2
이것이 작동하는 방식은 정규식에서 ()
"캡처"를 의미하는 다음과 같습니다. 이는 매우 구체적인 그룹을 찾은 다음 \1, \2 또는 \3으로 대체하여 참조할 수 있음을 의미합니다. 숫자는 1부터 시작하고 여는 괄호에서 계산합니다.
^
줄의 처음부터 시작한다는 뜻이다. (인서트가 첫 번째 공간을 덮기를 원하기 때문에 우리가 앞쪽에서 시작하여 첫 번째 공간을 찾을 것입니다)
.*?
이 부분은 공백 앞의 첫 번째 단어를 찾습니다. 한 그룹에서 문자( .
)를 가능한 한 많이( *
) 만들되 필요한 최소한의 문자로 만들어 이를 수행합니다 ?
. 물음표가 없으면 모든 문자(모든 공백 포함)를 캡처하게 됩니다.
( )
이 부분은 두 번째 그룹이 첫 번째 그룹 다음의 공간이라는 것을 의미합니다. 이 공간이 첫 번째 공간이어야 합니다. 이것이 우리가 캐릭터를 삽입하려는 것입니다.
대체
\1#\2
\1
첫 번째 문자 집합을 나타냅니다. 그리고 *
표현식의 는 문자 집합이 0을 포함한 임의의 길이의 단어일 수 있음을 의미합니다.
#
삽입 문자입니다
\2\
물론 공간이다.
결과적으로 #
모든 첫 번째 공백 앞에는 가 배치됩니다. 첫 번째 공백 이후에 원하는 경우 대체를 조정하는 것만 큼 간단합니다.
\1\2#
#
한 줄마다 첫 번째 공백을 넣습니다 .
이것이 정규식의 힘입니다. 간단한 찾기 및 바꾸기로 어떤 매크로보다 더 정확하게 삽입을 수행할 수 있습니다. 유연하고 빠르며 대부분의 경우 그다지 어렵지 않습니다.
RegEx가 무엇이고 왜 유용한지 설명하는 훌륭한 시작 튜토리얼이 있습니다. [RegExOne]. REO는 제가 이해하게 된 것입니다.
이것은 많은 사람들이 추천하는 튜토리얼인데, 솔직히 저는 이해가 잘 되지 않았습니다. [RegEx.정보]
나는 실제로 RegEx.info로 돌아간 적이 없습니다. 나는 곧바로 뛰어 들었습니다.메모장++ 문서실제로 이 시점에서는 매우 도움이 되었습니다. 물론 다음으로 테스트할 수 있습니다.정규식101]. 당신이 하고 싶은 유일한 일은 /gm
표현식에 를 추가하는 것 뿐입니다. 그런 다음 TestString에 스니펫을 붙여 넣고 제대로 될 때까지 연습하면 됩니다.
답변4
이에 대한 매우 간단한 해결책이 있습니다.
Notepad++에 이미 뭔가가 있다는 것을 기억했습니다.
- 바꾸기 창을 엽니다
- 찾기 필드에 "^"를 입력하고 공백이나 찾으려는 항목을 입력
하세요. 이렇게 하면 줄 시작 부분에 있는 항목만 검색됩니다. - 바꿀 내용 필드에 필요한 것을 입력하세요.
- 검색 모드를 "정규식"으로 설정
- 모두 바꾸기를 클릭하세요.
- 완료