我有一串字符串,其中一些字符串以..t.
結尾。我試圖找到一個正則表達式來匹配這些字符串,但處理完整的停頓令我頭疼!R包含滿檔的字符串的正則表達式
我已經試過
grep('^.+(..t.)$', myStrings)
但這也匹配的字符串,如w...gate
。我想我正在處理錯誤的全程。任何幫助都很感激。
注:我使用的內R. grep的
我有一串字符串,其中一些字符串以..t.
結尾。我試圖找到一個正則表達式來匹配這些字符串,但處理完整的停頓令我頭疼!R包含滿檔的字符串的正則表達式
我已經試過
grep('^.+(..t.)$', myStrings)
但這也匹配的字符串,如w...gate
。我想我正在處理錯誤的全程。任何幫助都很感激。
注:我使用的內R. grep的
K,更好的谷歌搜索一點點給出了答案;
grep("^.+(\\.\\.t\\.)$", myStrings)
這工作,因爲我們需要躲避點作爲\\.
在R.
的點(.
)只有一個字符匹配..去除斑點的意義ü點字符前,應使用雙斜槓(\\
)。
試試這個,而不是.....
grep('^.+(\\.\\.t\\.)$', myStrings)
Satheesh APPU
您的答案無效。你必須經常逃避''''R – 2014-09-12 11:22:01
是的大衛,你是對的。必須逃脫\像這樣grep('^ \\。+(\\。\\。t \\。)$',myStrings) – 2014-09-12 11:34:13
既然你如果字符串的結尾與..t.
結束只檢查,可以消除你的模式^.+
。
正則表達式語法中的點.
是一個character of special meaning,它匹配除了換行符序列以外的任何字符。要匹配一個字面點或任何其他特殊含義的字符,你需要跳過\\
它。
> x <- c('foo..t.', 'w...gate', 'bar..t.foo', 'bar..t.')
> grep('\\.{2}t\\.$', x)
# [1] 1 4
或者將該字符放在character class的內部。
> x <- c('foo..t.', 'w...gate', 'bar..t.foo', 'bar..t.')
> grep('[.]{2}t[.]$', x)
# [1] 1 4
注:我使用的範圍操作\\.{2}
匹配兩個點,而不是逃避它兩次\\.\\.
這絕對會更好!謝謝。將等待一天,如果沒有更好的解決方案(我懷疑它)會接受答案。 – Joe 2014-09-12 14:22:26
已經過了一兩天了...... – RyanfaeScotland 2016-09-02 14:18:16
我知道的 - 在1分鐘內回答顯示研究差。我想我只是碰到了一個更好的谷歌搜索術語 - 真的不想嘗試垃圾郵件。 – Joe 2014-09-12 10:56:49
假設你有一個字符串'str1 < - c(「something..t。」,「w ... gate」,「w1..tg」,「w2..t.g5」,「w1 ... t 。「)'代碼匹配1和5.是否有意? – akrun 2014-09-12 11:00:19
是的,這是打算 - 他的字符串必須以'..t.'結尾。在此之前的任何內容都是有效的 – Joe 2014-09-12 11:01:34