2017-03-08 17 views
1

공백으로 둘러싸이거나 시작 또는 끝에있을 경우 문자열에 나타나는 단어 수를 계산하고 싶습니다. 문자열의.R에서 정규 표현식 사용시 문제 : 공백 또는 문자열의 시작/끝으로 둘러싸인 단어 일치

이 같은 this 대답을 사용하고 있습니다 :

3 1 0 1 1 0 0를 반환하지만 내가 3 1 0 0 0 0 0을 기대하고 있습니다
library(stringi) 

testStr <- c("dutch dutch brown", "brown ", "AAdutch", "dutchAA", "AAbrown", 
      "brownAA", "hello") 
stri_count_regex(testStr, "(^|\\s+)dutch|brown(\\s+|$)") 

. 그래서 문제는 그것이 또한 원하지 않는 "dutchAA""AAbrown"을 포함한다는 것입니다.

RegExr에서 실행할 때이 정규 표현식이 올바르게 작동하므로 조금 당황합니다.

+0

'stri_count_regex (testStr, "\\ B를 (네덜란드어 | 브라운) \\ b ")'차이가 확실하지 않은 경우 정규식 링크를 게시 할 수 있습니까? 트릭을 사용했습니다 – rawr

답변

2

다음 정규식 사용해보십시오 :

(?:\b|\s+)(?:dutch|brown)(?:\s+|\b) 

regex demo

R 어쩌면

library(stringi) 

testStr <- c("dutch dutch brown", "brown ", "AAdutch", "dutchAA", "AAbrown", 
      "brownAA", "hello") 
stri_count_regex(testStr, "(?:\\b|\\s+)(?:dutch|brown)(?:\\s+|\\b)") # 3 1 0 0 0 0 0 
+0

'(? : pattern)'은 "[비 캡처 그룹] (http://stackoverflow.com/a/3513858/143319)"이고'\\ b'는 단어 경계 - 실제로 단어와 일치하는 단어의 시작 또는 끝에 일치합니다. –

+0

어쨌든 비 캡처 그룹의 동기는 무엇입니까? –