캡처 그룹을 사용하여 다시 참조 할 수 있습니다. Wiktor Stribiżew가 지적한대로 특정 시나리오와 사례의 처리 방법을 결정해야합니다. 있는 예시 사례를 들어
, 다음에 공백이 아닌 whitepspace 문자가 1 번 이상 (
\\S+
) 다음에 공백 키를 찾습니다 :
gsub("(KEY \\S+)", "\\1\n", string, perl = TRUE)
당신이 더 일반적인 싶은 경우 "KEY"를 따라갈 수있는 것을 허용한다면, 허용 할 것을 포함하는 문자 클래스를 추가 할 수 있습니다. (Wiktor가 가리키는 것처럼 영숫자/밑줄 문자에 대해서는 \ s를 사용합니다. 이런 식으로 뭔가 :
gsub("(KEY[., ;!?]\\S+)", "\\1\n", string, perl = TRUE)
gsub("(KEY\\s\\S+)", "\\1\n", string, perl = TRUE)
gsub("(KEY\\W+\\S+)", "\\1\n", string, perl = TRUE)
는 문자 클래스 부분에 당신이 원하는 문장 부호 퍼팅은 [., ;!?]
Wiktor의 변화 (들) 좀 더 강력한 될 수 있습니다
gsub("(KEY\\s+\\S+\\s*)", "\\1\n", string) # \s = white-space character
# \S = non-white-space character
gsub("(KEY\\W+\\w+\\s*)", "\\1\n", string) # \w for alphanumeric/underscore
# \W for the opposite of \w.
이 변종 다음 단어 뒤에 공백이 필요하지 않으며 (공백 문자가 0 개 이상인 경우 \\s*
) KEY 나 공백 문자 뒤에 공백 문자가 하나 이상 일치 할 수 있습니다. KEY 다음에 하나 이상의 영숫자/밑줄이 있습니다.
캡처 그룹을 사용하고 참조 하시겠습니까? 'gsub ("(KEY. +?)", "\\ 1 \ n", 문자열)'. 또는 더 일반적인'gsub ("(KEY [,,!?]. +?)", "\\ 1 \ n", string)'. 캐릭터 클래스 부분에 원하는 구두점을 넣으십시오. [.,;!?] – Jota
Carl, 당신은 지나치게 단순화하고 있습니다. 'Some Key, next word'는 어때? "다음"단어 다음에 공백이 없으면 어떻게 될까요? 그리고 당신을위한 단어 *는 무엇입니까? 1+ 영숫자/밑줄 ('\ w +')? 또는 하이픈과 아포스트로피가있는 ASCII 문자'[a-zA-Z '-] +'? –
@Jota 완벽하게 작동했습니다. 나는 당신이 대답을하면 그것을 받아 들일 것이다 – Carl