2012-09-24 57 views
2

我想弄清楚正則表達式,並且在解析以下內容時遇到問題。正則表達式幫助 - 找到一切,直到前一個空格字符

我有幾百行,看起來像這樣:

source ~/.bashrc; cd ~/myfiles/Clustering/Code/Connectedness/Code; R CMD BATCH "--vanilla --args BRAF P15056 BRAF_P15056_MutationOutput.txt 3NY5.pdb A" MutationAnalysisRunMeAlignment.R ~/myfiles/Clustering/ROutput/RunOutputAlignment/BRAF_P15056_3NY5_A_RunResults.txt 

我想找到與「MutationOutput.txt」結尾,並匹配它以前的空間字符串的一部分。然後我想把它換成什麼都沒有。因此,上述線路將成爲:

source ~/.bashrc; cd ~/myfiles/Clustering/Code/Connectedness/Code; R CMD BATCH "--vanilla --args BRAF P15056 3NY5.pdb A" MutationAnalysisRunMeAlignment.R ~/myfiles/Clustering/ROutput/RunOutputAlignment/BRAF_P15056_3NY5_A_RunResults.txt 

我知道它需要這樣的事情,

[A-Z_0-9]MutationOutput.txt 

但如何,只有抓住了線的最後一部分:「_MutationOutput.txt」。我如何讓它數一切,直到前一個空格字符?

謝謝你的幫助! / [^ ]*MutationOutput\.txt/

這意味着「空間,那麼一堆東西,是不是空格,然後MutationOutput.txt」:在//之間

回答

2

一切。 (我這樣,因爲我不知道記事本++如何與貪婪與nongreedy做到了。)

順便說一句,你可以讓你的第一次嘗試的工作也更好。字符類([]之間的字符)僅匹配一個字符,但可以使其與*匹配爲零或更多。其實,你可以用*做任何匹配零或更多的東西。

+0

作爲一般規則,如果匹配達到一定字符,則最好是使用一個'[^ ]',因爲這意味着對於正則表達式引擎少回溯。它是一個標準和體面的優化(比如'/ <[^>] +> /'爲尖括號)。 – Aatch