2016-05-24 10 views
0

私は正規表現のnoobで手を使うことができます。私は厳密に単語deleteの後に任意の種類のcharectersを含む2つの閉じ括弧(http://www.waynesworld1.com)を許可する正規表現を作成したいと思います。私はすべて一緒にそれを置く場合、それは次のことを受け入れるべきpython:正規表現に必要な正規表現: 'delete([任意のテキストはここ])'

delete(http://www.waynesworld123.com)

私は正規表現は、厳密にdelete()を受け入れるべきとelete()を受け入れるべきではないことを重く強調しましょう。限り括弧(例の中に許容delete()何でユーザータイプをあるよう:これはdelete([email protected])

いいと思い誰かが私はPythonでこの正規表現を作る助けてもらえこれまでのところ私が持っているすべては私の正規表現のための/delete/です

?。ここで
+0

なぜdownvote?これは、うまく構築され、非常に理解できる完全に合理的な質問です。私はこれまでの研究をしていて、何の効果も見いだせませんでした。 –

+0

このサイトに誰かがpython regexの質問をd​​ownvoteする人がいます。私はこの人は、質問する人は誰でももっと研究をすべきだったので、正規表現の質問は価値がないと思うと思います。私はこれを何度も見てきました。怒っているけど、私たちができることは何もないと思う。 –

+0

私は、正規表現を書くことを学ぶ試みの証拠は表示されず、正規表現の作成技術に関する情報ではなく正規表現を要求しているため、既存の下降声明があると思います。正規表現はコードであり、ここでコードを要求しています。人々はそれを好まない。 – user2357112

答えて

2

あなたが行く:ここ

^delete\(.*\)$ 

    ^assert position at start of the string 
    delete matches the characters delete literally (case sensitive) 
    \(matches the character (literally 
    .* matches any character (except newline) 
     Quantifier: * Between zero and unlimited times, as many times as possible, giving back as needed [greedy] 
    \) matches the character) literally 
    $ assert position at end of the string 

は、いくつかのPythonのテストコードです:

import re 

txt= {"delete(http://www.waynesworld123.com)", 
     "delete([email protected])", 
     "elete(test)", 
     "delete[test]", 
     "test"} 


pattern=re.compile('^delete\(.*\)$', re.DOTALL) 

for line in txt: 
    if pattern.search(line): 
     print 'PASS', line 
    else: 
     print 'FAIL',line 
+0

ありがとうルディ、これはうまく動作します。 Stack Overflowが私に許してくれたら、9分で答えを出します。 –

+0

開始点と終了のアサーションが必要であるとは思わないが、これはfindallとして使用される可能性が高いためです(OPはこの基準を示していません)。貪欲なグラブを避けるために、 '。*'トークンの後ろに '?'を追加するとうまくいくでしょう。トークンを '[^]]のように変更する*' –

+0

入力の検証を求めているようです - 「許可」彼が検索を探していることを確認したら、私は更新することができます。コメントありがとう。 –