2011-03-02 481 views
2

これは私の必要条件です。Powershell - 全体の単語(または)完全一致を検索するには

特定のCSSクラスが120ページ以上のaspxページを持つ私のソリューションで参照されているかどうかを調べる必要があります。

これは、我々はしかし、これは途中でRTOPでさえ言葉に一致する

gci . -include *.aspx -recurse | select-string -pattern ".rtop" -caseSensitive >> D:\CSSResult.txt 

を書いたコマンドです。つまり、変数にdirtopyという名前が付いていれば、結果リストに入ります。私はそれを望んでいない。

.rtopの完全一致が見つかった場合にのみ結果に表示します。

どうすればよいですか?

任意の参考文献または例が十分である。

ありがとうございます!

答えて

10

お試しselect-string -pattern "\.rtop\b"

ドットをエスケープする必要があります。そうしないと、任意の文字に一致します。ワード境界アンカー\bは、rtopの後に単語が継続しないようにします。

+0

恐ろしく!ありがとう!しかし、これもrtopの文字列の出現を返します*なぜそういうの? – Kanini

+0

rtopの後にアスタリスクを意味しますか?はい、この正規表現は可能です。単語の境界をチェックするだけで、文字と '*'のような英数字以外の文字の間に1つあります。 'rtop'の後に空白やend-of-stringを許したいのですか?その場合、 '\ b'を'(?= \ s | $) 'に置き換えてください。 –

3

select-stringの-simplematchオプションを使用すると、regexの代わりにリテラルの一致を実行できます。

+0

ありがとう!しかし、次の.rtop、.rtop1、.rtop *、およびdirtopyを持つファイルがある場合、simplematchオプションを使用すると、.rtop、.rtop1および.rtop *のすべての出現が返されます(ダーティコピーのみが除外されます)。だから、最初の文字セットがrtopであるすべての文字列の出現を返しますか?しかし、これはMSDNの記述とはまったく矛盾しています。「このパラメータを指定すると、正規表現の一致ではなく単純な一致が実行されます。」いいえ? – Kanini

+0

これは、リテラル文字列 ".rtop"を含むすべての行を返します。違いは、ドットがどのように扱われるかです。 Unsing - シンプルマッチ、それはドットに一致する必要があります。正規表現のドットは "任意の文字"を意味するので、正規表現を使用すると、その位置にある任意の1文字に一致します。 ".rtop"に続く簡単なマッチを行うことで、 ".rtop"に続く文字を含むものを除外することができます。 – mjolinor

関連する問題