2013-07-25 9 views
5

私は以下の文字列を持っています。マッチで特定のパーツだけを選択する方法は?

/v/dkdkd-akdoa? 

dkdkd-akdoaを置き換えたいと思います。

すると、メソッドを置き換えるマイ

string.replace("v\/(.+)\?", "replace") 

のように見えますが、それはまたv/を置き換えます。 dkdkd-akdoaのみを交換するにはどうすればよいですか?

+0

http://www.regular-expressions.info/ –

答えて

3

かなり単に

string.replace(/v\/.+\?/, "v/replace"); 

最初の部分が知られていない場合は、キャプチャし、それを置き換えることができます。

string.replace(/(v\/).+\?/, "$1replace"); 

を明らかにv/が一定であるため、それが知られている第二の例では。単にあなたのパターンあなたを扱う

string.replace(/(v\/)(.+)(\?)/, "$1replace$3"); 

以上:あなたが潜在的に/^(.*?/).+\?/

5

てみてください以下のコード:あなたは?を維持したい場合は

> '/v/dkdkd-akdoa?'.replace(/(v\/).+\?/, '$1replace') 
"/v/replace" 

> '/v/dkdkd-akdoa?'.replace(/(v\/).+(?=\?)/, '$1replace') 
"/v/replace?" 

$1参照最初のグループを((v\/)

1

ようなもので、それに代わるあなたはとても接頭辞と接尾辞が独自のマッチンググループがあり、交換価値に含めるそれを破ることができます一致しないグループとして置換する:

string.replace(/(v\/).+(\?)/, "$1replace$2")