2017-01-26 2 views
1

해결 방법이 있는지 알아야합니다.단어의 특정 부분에만 정확히 일치하는 grepl

id Item 
1 "CRANBERRY 10PKTS CARTON, BLUEBERRY 20PKTS CARTON" 
2 "CRANBERRY 10PKTS CARTON,BLUEBERRY 20PKTS CARTON" 
3 "CRANBERRY 10PKTS CARTON" 
4 "CRANBERRY 30PKTS CARTON" 

내가 원하는 것은 단지 "크랜베리"및 관련 이름에 일치하는 것입니다

의 우리는 다음과 같이 포함 된 목록을한다고 가정 해 봅시다. 여기서 핵심은 id1과 같은 것이있을 때 grepl은 크랜베리를 함유하고있을뿐만 아니라 블루 베리도 함유하고 있으므로 false를 반환해야합니다.

id1과 id2에 대해 grepl이 false를 반환하지만 id3과 id4에 대해 true를 반환하는 방법이 있습니까? 가급적이면 단일 grepl 문장 만 있으면 문제에 필요한 모든 것입니다.

미리 감사드립니다.

답변

1

예를 들어, 패턴은 ,으로 구분 된 각 단어 집합에서 단어 'CRANBERRY', 'BLUEBERRY'등이 한 번 발생하는 것으로 보입니다. 이런 경우, 우리는 , ([^,]+) 문자열이 끝날 때까지 ($)

grepl("^.*\\bCRANBERRY[^,]+$", df1$Item) 
#[1] FALSE FALSE TRUE TRUE 
없는 문자 다음에 문자열 ( ^)의 시작부터 문장에서 단어 '크랜베리'를 일치시킬 수 있습니다
+0

나는 처음에는 이해하지만, []는 이해하지 못한다고 생각합니다. grep이 볼 수있는 '첨부 파일'또는 종류로 [?]가 있습니까? – bzzbzzRzzbzz

+0

@bzzbzzRzzbzz'[]'안에'^ '를 사용하여','가 아닌 하나 이상의 ('+') 문자를 찾습니다. 그래서 basicallly, 우리는 'BLUEBERRY'와 같은 다른 단어의 가능성을 제거하고 있습니다. – akrun