XPathを使用して、「単語全体をマッチさせる」(VS検索の場合と同じように、XPath:単語全体をマッチさせる(大文字と小文字を区別しないフラグを使用してマッチ関数を使用)
contains
とmatches
の機能は同じように動作しますが、マッチは大文字小文字の区別がない場合はi
のようなフラグを使用できます。言い換えれば
、私は、これら二つのXPathクエリと同じ結果になっています:
<pets>
<dog name="Rupert" color="grey"/>
<dog name="Ralph" color="brown"/>
<cat name="Marvin the Cat" color="white"/>
<cat name="Garfield the Cat" color="orange"/>
<cat name="Cat" color="grey"/>
<cat name="Fluffy" color="black"/>
</pets>
Matches XPath: //cat[descendant-or-self::*[@*[matches(.,'Cat')]]]
returns:
<cat name="Marvin the Cat" color="white"/>
<cat name="Garfield the Cat" color="orange"/>
<cat name="Cat" color="grey"/>
Contains XPath: //cat[descendant-or-self::*[@*[contains(.,'Cat')]]]
returns:
<cat name="Marvin the Cat" color="white"/>
<cat name="Garfield the Cat" color="orange"/>
<cat name="Cat" color="grey"/>
をしかし、私は唯一の「猫」単語全体と一致する結果を返すようにmatches
を使用したい:
<cat name="Cat" color="grey"/>
単語全体と一致するように一致クエリを調整するにはどうすればよいですか?
EDIT: 大文字と小文字の区別がないので、マッチ機能を使用する必要があることを忘れてしまいました。
うーん..これは私が望む結果を与える。しかし、^ $アンカーについて説明できますか?私は前にそれらを使ったことがありません。 – developer
答えにリンクを追加しました。「2つのメタキャラクター...」を参照してください。 –
ありがとう、私はまだいくつかのテストを行う必要がありますが、これはトリックを行うようだ! – developer