편집하다:
\n
내 텍스트에서 특정 알 수없는 단어 앞에 를 배치하고 싶습니다 . 알 수없는 단어가 텍스트에 처음 나타날 때 "나무"와 "호수"사이에 있다는 것을 알고 있습니다.
전의. 텍스트 수 :
text
[1] "TreeRULakeSunWater"
[2] "A B C D"
편집하다:
"나무"와 "호수"는 절대 변하지 않지만 그 사이의 단어는 항상 변하기 때문에 내에서 "RU"를 찾지 않습니다. regex
내가 현재하고있는 일 :
if (grepl(".*Tree\\s*|Lake.*", text)) { text <- gsub(".*Tree\\s*|Lake.*", "\n\\1", text)}
내가 위에서하는 일의 문제는 gsub
의지가 모든 것을 정복하고 text
그냥 떠난다는 것 \nRU
입니다.
text
[1] "\nRU"
나는 또한 시도했다 :
if (grepl(".*Tree *(.*?) *Lake.*", text)) { text <- gsub(".*Tree *(.*?) *Lake.*", "\n\\1", text)}
내가 원하는 text
모습 gsub
:
text
[1] "Tree \nRU LakeSunWater"
[2] "A B C D"
편집하다:
Wiktor Stribizew의 의견에서 나는 성공할 수 있습니다 gsub
gsub("Tree(\\w+)Lake", "Tree \n\\1 Lake", text)
그러나 이것은 "RU"가 "Tree"와 "Lake"사이에있는 경우에만 수행됩니다. 이는 알 수없는 단어의 첫 번째 발생입니다. 알 수없는 단어와이 경우 "RU"는 텍스트에서 여러 번 표시됩니다. , 그리고 \n
"RU"가 전체 단어 일 때 "RU"의 모든 항목 앞에 배치 하고 싶습니다 .
New Ex. 텍스트
text
[1] "TreeRULakeSunWater"
[2] "A B C RU D"
New Ex. 내가 원하는 것 :
text
[1] "Tree \nRU LakeSunWater"
[2] "A B C \nRU D"
어떤 도움을 주시면 감사하겠습니다. 추가 정보가 필요하면 알려주십시오.
먼저 "나무"와 "호수"사이에 알려지지 않은 단어 를 찾아야 합니다. 당신이 사용할 수있는
unknown_word <- gsub(".*Tree(\\w+)Lake.*", "\\1", text)
패턴 Tree
은 문자열 에서 마지막까지의 모든 문자와 일치 한 다음 알 수없는 단어 ( \w+
= 하나 이상의 단어 문자)를까지 캡처 Lake
한 다음 나머지 문자열과 일치시킵니다. 벡터의 모든 문자열을 대체합니다. [[1]]
인덱스로 첫 번째 항목에 액세스 할 수 있습니다 .
그런 다음 단어를 알고 있으면
gsub(paste0("[[:space:]]*(", unknown_word[[1]], ")[[:space:]]*"), " \n\\1 ", text)
IDEONE 데모를 참조하십시오 .
여기에 [[:space:]]*(
+ unknown_word [ 1 ] + )[[:space:]]*
패턴이 있습니다. 알 수없는 단어의 양쪽 끝에있는 0 개 이상의 공백과 알 수없는 단어 자체 (그룹 1로 캡처 됨)와 일치합니다. 대체에서 공백은 1로 축소 (또는없는 경우 추가) 된 다음 \\1
알 수없는 단어 를 복원합니다. 당신은 대체 할 수 [[:space:]]
와 함께 \\s
.
최신 정보
RU
전체 단어 앞에 개행 기호 만 추가해야하는 경우 \b
단어 경계를 사용하십시오 .
> gsub(paste0("[[:space:]]*\\b(", unknown_word[[1]], ")\\b[[:space:]]*"), " \n\\1 ", text)
[1] "TreeRULakeSunWater" "A B C \nRU D"
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다