3

正規表現を使用できるNginX置換フィルターを使用しています。基本的な方法、つまりで置き換えることはできますが、条件phone付きtelephoneでテキストの文字列を置き換えることはできないようです。

検査用のXMLのチェックは次のとおりです。

eat apples cantaloupe bananas often

次の一連のルールを実行したいと思います。

  1. eatで始まり、で終わる文字列を探しますoften
  2. 文字列にが含まれている場合bananasbananasand especially bananas
  3. 文字列にバナナが含まれていない場合は、文字列に対して何もしません

私はこのようなものを使用して文字列の一部を利用できるようにすることができることを知っています:

/(eat.*)(bananas)?(.*often)/

次のルールを使用して、bananas存在すると仮定して置換を行うことができます。

   $1 and especially $2 $3

bananasただし、存在しない場合、これは奇妙な結果になります。

入力

eat apples cantaloupe often

出力:

eat apples cantaloupe and especially often

先読みオペレーターが必要ですか?この記事を読みましたが、まだ問題があります。

4

2 に答える 2

3

先読みのない代替案:

Raw Match Pattern:
^eat(.*)(bananas)(.*)often$

Raw Replace Pattern:
eat \1 and especially \2 often

$sourcestring before replacement:
do not eat bananas often
eat apples cantaloupe often
eat apples cantaloupe bananas often

$sourcestring after replacement:   
do not eat bananas often
eat apples cantaloupe often
eat apples cantaloupe and especially bananas often
于 2013-01-22T00:41:38.777 に答える
3

先読みを使用してみてください:

/(?=.*eat.*bananas.*often) bananas/
于 2013-01-22T00:28:27.913 に答える