2011-12-26 5 views
0

文字「%」または「文字」の10個以上の数を検出する正規表現を作成する際に、 = 'または': 'を任意の長さの文字列に挿入します。任意の長さの文字列中の%または=または:の数を数える正規表現

これまでのところ、私は次のソースをチェックしましたが、私のニーズに投稿されたものを適応させるように見えることができませんでした。また

、私は」私は以下の表現を自分で試してみましたが、私の文字列には一致しませんでした。

  • /[%=:]{10,}/
  • /[a-zA-Z0-9](:|%|=){10,}/

いずれかを助けることができます(私は試合をチェックするために、 "pcretest" を使用してきましたか)?

+2

サイトにようこそ*質問は投稿してください*。既存の質問の一番下には編集リンクがあり、これを使って変更することができます。私は両方の質問をまとめて、答えが一箇所に集約されるようにしました。この質問に対する回答を再度受け入れる必要があるかもしれません。 – BoltClock

答えて

2

文字列が10(またはを持っている場合は、この正規表現がマッチします文字の)より:%=:の間に、他の任意の数の文字を持つ:

:あなたは、少なくとも10を含む 全体文字列と一致する必要がある場合は

/(?:[^%=:]*[%=:]){10}/ 

、このいずれかを使用

/^(?:[^%=:]*[%=:]){10}[\S\s]*$/ 

あなたがと連続している必要があるかどうかを言っていませんでした。です。この答えはないと仮定します。

+0

ありがとう@ridgerunner - はい、私は今、私の悪い礼儀を知っています。元の投稿を削除したかったのですが、これは私が研究をしたとは言わず、代わりに編集するとは思わなかったからです。 FWIW、あなたの答えは私を助けました。ありがとうございました。 – James

+1

@James - 問題ありません。ここでもロープを学ぶのに私はしばらくかかりました。ところで、投稿後にあなたの心のコンテンツにあなたの質問(および回答)を編集することができます。一番良い答えを決めると、それを正しいものとしてチェックしてください。 – ridgerunner

+0

@BoltClock - 私の重複した投稿を削除していただきありがとうございます。 (どういうことが起こったのかは分かりませんが、通常、私はそのようなものについてはかなり注意しています!) – ridgerunner

1

...

方法について:

/[%=:]{1000,}/ 

+0

「100」以上:-) –

+0

は一致しませんでしたが、残念です。それらの3つの文字のいずれか*を100回以上マッチさせる必要があると言えば、それは何か変わるでしょうか? – James

+1

@Fredrikのタイトルは本文と一致しません( "1k"と "100")。しかし、OPはいずれにしてもそれを把握できるはずです。 –

0

入力の長さを計算します。

次に、あなたが置換した入力である別の変数(グローバルには、[%=:]+は何もありません)があります。

入力の長さと比較し、この変数の長さを計算します。差が100以上であれば、あなたは試合を持っている;)

1
cnt = 0 
for each character in string: 
    if character is '%' or ':' or '=': 
     cnt++ 

    if cnt >= 10: # or 100 or 1000 
     SUCCESS 
     break 
+0

余分な文字を調べないように、 'cnt'が10になるとすぐループから抜け出すべきです。 – jwodder

+0

true、更新します –

0

それはあなたが使用している正規表現エンジンいるに依存しますが、これは動作するはずです:

/([%:=][^%:=]*){10,}/ 

プログラミング言語によっては、あなたがリードバックスラッシュ(例で括弧と括弧をエスケープする必要があります。 )。

これは、選択した文字{'%'、 ':'、 '='}のいずれかと一致します。

関連する問題