3

を使用して、文字列に特定のパターンが含まれているかどうかを検出しようとしていますstr_detect。私が持っているパターンは一連の「....」です - ドットの正確な数は不明です。私はstr_detect以下のように使用しようとしています....

ただし、この特定のケースでstr_detectは TRUE を返します。どこが間違っているstr_detectのか、また使用するのに適切な機能なのか疑問に思っていますか? ここの誰かが助けてくれることを願っていますか?

library(stringr)
dot_pat="\\.........................";
str="The primary.objective is of the study."
str_detect(str,dot_pat)

これは TRUE を返します。strのドットがパターンに従っていないため、FALSE を期待しています。

前もって感謝します、シマク

4

3 に答える 3

4

パターンの意味: ドット (\\.) の後に 24 個の記号が続きます。したがって、これは「.objective is of the stu」に一致します。

たとえば 10 個のドット記号を検出したい場合は、次のようなパターンを使用します: dot_pat="\.{10}"

str_detect("The primary.objective is of the study.", "\\.{10}")
str_detect("hello..........world", "\\.{10}")
于 2013-07-23T08:29:08.710 に答える
1

もう1つのはるかに貧弱なアプローチは、すべての「。」をエスケープすることです。ショーンが示すのは、エスケープされていない限り、「任意の文字」の正規表現です。

paste(rep("\\.", 10), collapse = "")
## This gives
## [1] "\\.\\.\\.\\.\\.\\.\\.\\.\\.\\."


str_detect("The primary.objective is of the study.", paste(rep("\\.", 10), collapse = ""))
str_detect("hello..........world", paste(rep("\\.", 10), collapse = ""))
于 2013-07-23T12:40:36.677 に答える
0

パターンは、ストップ (.) の後に 24 個の任意の文字が続く "." と一致します。正規表現の任意の文字を意味します。入力して正規表現のヘルプを参照してください

?regex

パターンを次のように設定することで、たとえば1から24までの任意の数のストップを検出できます

dot_pat <- "\\.{1,24}"

\\「。」の前に置く。任意の文字だけでなく、特定のストップに一致させます。

于 2013-07-23T08:33:46.393 に答える