2016-12-28 10 views
0

私はgrepするために必要なカードのコレクションは次のように定義されています。カードの昇順ランクがあるカードのグレープ昇順。それはなぜ機能するのですか?

h = Ah2c2d3s5h6d8s8d9h9cTdTcKh 
h != 3d4dQc3sKcAh2sAc7hKdKsKh4h62 (Q is followed by lower rank 3) 

A(ace) 2 3 4 5 6 7 8 9 T(ten) J Q K 

スーツは、次のような定義されてい

{h ∈ H | h contains only cards in ascending order regardless of their suit} 

例:

c(clover) s(spade) h(heart) d(diamond) 

私は以下のgrepを試しましたが、それは正しいですが、私はまだしていません なぜそれが動作するのか理解しています。ただgrep -vが実際に無効であることをtripleeeで指摘したように

編集***は、(それを忘れてしまった)-Pフラグを追加しました。

grep -Pv "[KQJT].*[2-9A].* |[KQ].*[JT].* |[6-9].*[2-5A].* " 

は何私をバッフルと、このパターンと一致するかさえ5 followed by [A2-4]

ソリューションはここで見つけることができ、運動のために提供31027 lines

テキストファイルの合計を持っていましたかK followed by Q次のとおりです。 http://computergebruik.ugent.be/oefeningenreeks1/kaarten1.txt

+2

が重複する可能性を試してみてください[参照 - この正規表現とは何ですか?](http://stackoverflow.com/questions/22937618/reference-what-dis-this-regex-mean) – Biffen

答えて

1

あなたの正規表現はまったく有効なものではありません。なぜ私は正規表現が動作するのか理解できません。

平野grepは変更を意味する|を理解していません。 -Eオプションを追加して、ERE(伝統的にはegrep)正規表現のセマンティクスを指定するか、POSIX grepのバックスラッシュの|を指定することができます。複数の-eオプションを指定することもできます。 (例えばhttps://en.wikipedia.org/wiki/Regular_expression#Standards慣用の各種の正規表現の方言に関するいくつかの背景を参照)。

grep -Ev "[KQJT].*[2-9A].* |[KQ].*[JT].* |[6-9].*[2-5A].* " 
grep -v "[KQJT].*[2-9A].* \|[KQ].*[JT].* \|[6-9].*[2-5A].* " 
grep -ve "[KQJT].*[2-9A].* " -e "[KQ].*[JT].* " -e "[6-9].*[2-5A].* " 

でもこの修正で、正規表現は、ここで、例えばマッチを除去するために明らかに不十分です3の後に2が続きます。すべてのケースをカバーする唯一の方法は、すべての可能性を列挙することです。 (1の後に任意の数字、2つの数字のあとに高い数字、3つの数字のあとに高い数字などが表示されます)もっと良い方法は、スクリプト言語を使用することです。必要なソート順を入力し、入力がソートされているかどうかを確認します。

ことができない場合は、おそらくの

ゼロ以上のスリー続く、ゼロ個以上の補数が続く、ゼロ個以上のエースを探し
grep -E '^(A.)*(2.)*(3.)*(4.)*(5.)*(6.)*(7.)*(8.)*(9.)*(T.)*(J.)*(Q.)*(K.)* ' 

など

+0

多分、http://stackoverflow.com/questions/2298007も参照してください。 /なぜそう多くの異なる正規表現の方言 – tripleee

+0

ああ、私は-Pフラグを使用していたことを忘れていました。私は、行の数が与えられた解と一致しているので、それがうまくいくように思えました。私はまだ教職員からの正しいフィードバックを持っていません。私は本当にすべての単一の組み合わせを書くことを考えていたが、運動は最も簡単なフォームを求めたので、私が書いたものは正しいと思った。 – Kortika

+0

'-P'は基本的に' -E'のスーパーセットを取得しますが、これは非標準の拡張です。 – tripleee

関連する問題