0

いくつかのファイルへのパスを含む長いテキストがあります。

私がやりたいのは、そこからパスを削除することです。ファイルパスはすべて次のようなものです。

some text 1
/all/extraItems/Java/.Scripts/.Sample1.js
some text 2
/all/extraItems/Android/.Scripts/.Sample2.js
some text 3

「^/all」を使用すると、 /allで始まる文が選択され、.jsで終わる文も.js$が選択されることがわかっています。しかし、これらをマージしてファイルパス全体を選択することはできません。

結局、パスを削除するには、次のコードに正規表現を配置する必要があります。

text.replaceAll(<RegularExpression> , "");

誰が正規表現を書くことができますか? 何かツールはありますか?

4

2 に答える 2

1

それらを「マージ」したい場合は、その間の文字も一致させる必要があります。

^/all.*?\.js$

.任意の文字に一致し*、前の文字を0回以上?繰り返し、繰り返しを貪欲にせず、複数行にわたる一致を回避します。Javaを使用しているため、文字列内でバックスラッシュをもう一度エスケープする必要があります。

"^/all.*?\\.js$"

複数行オプションをまだ使用していない場合(入力に対して実際に実行する必要があり^/allますjs$)、次のように実行できます。

"(?m)^/all.*?\\.js$"
于 2012-10-23T18:15:31.413 に答える
1

.*?それらを一緒にマージするために使用します

^/all.*?\.js$

つまり、regex0 から n 個の文字に一致すると言います。つまり、...*?で始まり、..allで終わる文字は、任意の文字に一致することを意味するため、\.jsエスケープする必要があります.....

複数行オプションを使用することを忘れないでください

于 2012-10-23T18:15:08.600 に答える