2016-08-18 9 views
2

たちはMATLABでこれらの文字列があるとします。MATLABで正規表現を使用してパス(文字列)の末尾部分を削除する方法はありますか?

xx = 'C:/MY_folder/This_gg/microsoft/my_file'; 

または

xx = 'C:/end_folder/This_mm/google/that_file'; 

私は最後/my_filethat_file)の後に式を削除します。 MATLABで正規表現を使用してこれを行うにはどうすればよいですか?

+0

は、ファイルの名前を知っていますか:

あなたは、次のリンクでの正規表現を見ることができますか?さもなければ 'regexp(xx、 '/')'はすべての '/'のインデックスを見つけます。代わりに関数 'fileparts()'の使用を検討してください。 – patrik

+0

@patrik。私たちはファイルの名前を知らない。 – user2991243

+0

/\/(?!.*?\/)(.*)/g –

答えて

3

私はあなたが正規表現を求めている知っているが、簡単な方法があります:

pathStr = fileparts(xx) 

それとも、あなたはファイルのすべての部分

[pathStr, name, ext] = fileparts(xx) 
+1

私はOPを推測します'pathStr = [pathStr filesep]' '(' filesep'は、オペレーティングシステムに応じてファイルセパレータをリターンします) – thewaywewalk

1
  1. をしたい場合は、あなたがしたい場合も最終的に削除します/

    yy = regexprep(xx, '/[^/]*$', ''); 
    

    正規表現パターン'/[^/]*$'は、/と一致し、その後に文字列の末尾に任意の数の/と一致します。マッチは空の文字列(regexprep)に置き換えられます。

    yy = regexprep(xx, '(?<=/)[^/]*$', ''); 
    

    または1で'/'ではなく、''で置き換えます:

    yy = regexprep(xx, '/[^/]*$', '/'); 
    
  2. あなたがにしたい場合は、/最終的に保つ、あなたはlookbehindアサーションで正規表現を変更することができます

1

最後の単語を削除する場合は、これを試してください:

yy = regexprep(xx,'(\w+)$',''); 

これは、文字列の最後の単語を検索し、空の文字列で置き換えます。 Regex101.com - Select last word

関連する問題