1


正規表現から始めたばかりです... \b \ d \ d \ bのような正規表現を探していますが、数字が同じではない可能性があります(たとえば、23は一致するはず
ですが、22は一致しないはずです)私はたくさん試しました(後方参照を含む)が、それらはすべて失敗しました。
以下のコード(python 2.7.3)でREを試しましたが、これまでのところ一致するものはありません

import re
# accept a raw string(e) as input
# and return a function with an argument
# 'string' which returns a re.Match object
# on succes. Else it returns None
def myMatch(e):
    RegexObj= re.compile(e)
    return RegexObj.match

menu= raw_input
expr= "expression\n:>"
Quit= 'q'
NewExpression= 'r'
str2match= "string to match\n:>"
validate= myMatch(menu(expr))
# exits when the user # hits 'q'
while True:                     
    # set the string to match or hit 'q' or 'r'
    option = menu(str2match)
    if option== Quit: break 
    #invokes when the user hits 'r'
    #setting the new expression
    elif option== NewExpression:
        validate= myMatch(menu(expr))
        continue
    reMatchObject= validate(option) 
    # we have a match ! 
    if reMatchObject:           
        print "Pattern: ",reMatchObject.re.pattern
        print "group(0): ",reMatchObject.group()
        print "groups: ",reMatchObject.groups()
    else:
        print "No match found "
4

1 に答える 1

5

後方参照とネガティブ先読みを使用できます。

\b(\d)(?!\1)\d\b

後方参照は、最初のグループで一致したものに置き換えられます。(\d)

負の先読みは、次の文字が式に一致する場合、一致が成功するのを防ぎます。

つまり、これは基本的に番号を一致させることを意味します(これを「N」と呼びます)。次の文字がNの場合、一致に失敗します。そうでない場合は、もう1つの番号を一致させます。

于 2013-02-11T19:37:02.227 に答える