3

R の正規表現に問題があります。ライブラリ stringr の str_extract を使用していますが、問題は次のとおりです。

library(stringr)
test="word1 something word2 something word3 something word3"
temp = str_extract(test,'word2.+word3')
print(temp)
## [1] "word2 something word3 something word3"

問題は、最初の単語 3 で停止することです。文字列の最後の部分は必要ありません。任意のアイデアをお願いします? どうもありがとうございます

もし私が持っているなら

test="word1 something word2 something1 word3 something2 word3 something3 word2 something4 word3"

そして、この「word2 something1 word3」、「word2 something4 word3」のような 2 サイズのベクトルを維持したいと思います。

4

3 に答える 3

12

正規表現行を次のように変更します。

temp = str_extract(test,'word2.+?word3')
                                ^

?これにより、貪欲でなくなります.+(つまり、正規表現の次の用語の前にすべてをキャプチャするのではなく、可能な限りキャプチャしません)。

すべての出現箇所を抽出するには、次を使用します。

temp = str_extract_all(test,'word2.+?word3')
于 2013-05-01T17:48:33.860 に答える
3

文字列内の 2 点間のすべての出現を抽出しようとしていると思います。私が間違っている場合は、お詫び申し上げます。qdap's genXtractこれはと の設定で実現できますwith = TRUE。また、これはstringr答えではありません:

test="word1 something word2 something1 word3 something2 word3 something3 word2 something4 word3"

library(qdap)
genXtract(test, left = "word2", right = "word3", with=TRUE)

## > genXtract(test, "word2", "word3", with=TRUE)
##         word2  :  word31         word2  :  word32 
## "word2 something1 word3" "word2 something4 word3" 
于 2013-05-01T18:43:11.683 に答える