2017-08-18 2 views
0

JMeter(3.2)でファイルパスを分割しようとしましたが、groovyを使用して以下のエラーが発生しました。ファイルパスを分割するときに予期しない内部エラーの原因は何ですか?

java.util.regex.PatternSyntaxException: Unexpected internal error near index 
1 
\ 
^ 

私はGroovy split using file.seperatorで述べた溶液を使用して問題を解決することができましたが、私はエラーを取得した理由を知りたいです。

それはのためのエスケープ文字として読み込まれますので、これはおそらく、あなたが「\\」に分割したときに私のコードは

\\executePath variable has C:\temp\somepath\anotherfolder\ 
    def aa = vars.get("executePath").split("\\\\"); 

答えて

1

のように見えたものを私が知る限り、そのエラーだけ表示されるはずです正規表現と何もエスケープされません。あなたは、私は次のことをしようとするときは、

split("\\") 

を使用していないことを確認している、私は正しい出力を得るあなたが行うことができませんでしたファイルパスを分割することによって達成しようとしているのは何

def bb = 'C:\\temp\\somepath\\anotherfolder\\' 
def aa = bb.split('\\\\') 
println aa 
Output [C:, temp, somepath, anotherfolder] 

javaのPathインターフェイスを使用しますか?

+0

私のパスには二重バックスラッシュがありませんでしたので、これは私のためには機能しませんでした。 –

+0

バックスラッシュをエスケープする必要があるため、文字列表現には\\が必要です。 def bb = 'C:\ temp \ somepath \ anotherfolder \'はエラーの原因となります – Zyxer22

+0

私は '$ {__ BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer()。getBaseDir();からパスを取得しています。 )} $ {__ BeanShell(File.separator、)} 'と私はlog.infoこれを保持する変数をダブルバックスラッシュなしのパスを取得するとき。 –

1
  1. 使用Pattern.quote代わりにハードコードされたバックスラッシュのいずれかの特殊文字
  2. 使用File.separatorを逃れるために、この方法は、あなたのテストでは、プラットフォームに依存しないでしょう。

例のGroovyコード:

import java.util.regex.Pattern 

def aa = vars.get('executePath').split(Pattern.quote(File.separator)) 

aa.each { 
    log.info ("${it}") 
} 

デモ:

Groovy split file path

私はまた、JMeterの中のスクリプトに関していくつかのより多くのGroovyのヒントについてGroovy is the New Blackを見てお勧めします。

+0

次回は試してみませんか? –

関連する問題