2

Dateそうでない限り、文字列内の単語のすべてのケースを置き換えたいと思いますDate()(つまり、日付の後に括弧が続きます)。これが文字列の例で、最初に試したことは次のとおりです。

x <- c("frDate", "Date()", "Date", "Sys.Date()")
gsub("Date", paste("Date:", Sys.Date()), x)

私が得るもの:

> gsub("Date", paste("Date:", Sys.Date()), x)
[1] "frDate: 2013-04-04"     "Date: 2013-04-04()"     "Date: 2013-04-04"      
[4] "Sys.Date: 2013-04-04()"

私が欲しいもの:

> gsub("Date", paste("Date:", Sys.Date()), x)
[1] "frDate: 2013-04-04"     "Date()"     "Date: 2013-04-04"      
[4] "Sys.Date()"

この件に関する以前の質問から学ぶことができると思いました。

gsub("(?=[^Date\\(\\)[^Date]])", paste("Date:", Sys.Date()), x)

あまり良くない。

誰かがこのソリューションをより一般的なものにするためのより良いタイトルを持っている場合は、R 正規表現ユーザーが例外を処理する検索可能な手段を持つように変更してください。

4

2 に答える 2

3

gsub('Date$', paste('Date:', Sys.Date()), x) あなたのために働きますか?

# [1] "frDate: 2013-04-04" "Date()" "Date: 2013-04-04"   "Sys.Date()"   

正規表現の$演算子は、行末を示します。このようにして、xその末尾にある値のみDateが一致します。blah blah Date blah正規表現に一致させたいという状況が発生した場合、正規表現は非常に複雑になります。

次のようなDatea 以外のものが続くと一致させることもできます。(

gsub('Date(?!\\()', paste('Date:', Sys.Date()), x, perl=TRUE)

?は以下をオプションとしてマークし、は!一種の否定です。

于 2013-04-04T16:08:35.420 に答える