2016-08-31 3 views
-2

私は正規表現が中に入るために「マイル」タグを作成しようとしたが、唯一の「製品1」のために、私が到着したことを最も近くでは、この正規表現 - 以前の値に依存ラインとの間の一致系列

(?<=<Product>Product1)[](?<=<Miles>)[\d\D]*?(?=<\/Miles>) 

<ProductList> 
    <Product>Product1</Product> 
    <Dot/> 
    <Miles>200</Miles> 

    <Product>Product2</Product> 
    <Dot/> 
    <Miles>200</Miles> 
</ProductList> 

たI結果の前にどのように前の部分を取り除くことができるのかわからない。

テスト:https://regex101.com/r/wU0iZ0/4

は、私が使用しているアプリケーションが++メモ帳で

+2

regexタグから: "注:HTML、JSONなどの正規表現を求めるには否定的な反応が見られる傾向があります。パーサがある場合は代わりにそれを使用してください。 – Keozon

+0

あなたの書式は常に正確にその字下げと改行が正確にどこにあるのですか? – Bohemian

+3

[regex]と[xml]であなたの質問にタグを付けました。あなたの入力は非常にXMLのようです。あなたは*あなたの目的のために正規表現の代わりにXPathを使うことを真剣に考えるべきです。 –

答えて

-1

この正規表現は、グループ1内の指定された製品のためのマイルの前にコンテンツを取り込み、および交換は、新しい値になります。例えば、666Product2のためのマイルを交換する:

Find: (<Product>Product2([\d\D](?!<Product>))*<Miles>)\d* 
Repl: ${1}666 

をグループ番号の周りの中括弧は、グループ番号を明確にする必要があります。

実際の正規表現のlive demoを参照してください。

+0

Hy Bohemian、私は理由はわかりませんが、あなたのライブデモであなたの最初と最後の式の作業は、notepad ++ではできません(申し訳ありません。 ) –

+0

@MichelSouza私はそれを調べますが、最初に何をしたいですか?マイルを交換しますか?マイル以外のものはすべて削除しますか?他に何か?あなたが望むのは、他の場所では見られないいくつかの奇妙な振る舞いを持つメモ帳で、答えを変えます。お知らせ下さい。 – Bohemian

+0

私はこれを使用して置換と簡単な検索を行いますが、検索はOKですが、置換は 'Product1'と 'Miles'の間のすべてを取得します。このXMLは単なる例であり、 。 助けてくれてありがとう –

関連する問題