刚开始使用正则表达式...我正在寻找正则表达式
比如\ b \ d \ d \ b但是数字
可能不一样。(例如23应该匹配
但是22不应该)我已经尝试了很多
(涉及反向引用)但他们都是
失败。
我用下面的代码尝试过RE
(python 2.7.3)但到目前为止没有任何匹配
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 "
答案 0 :(得分:5)
您可以使用反向引用和否定前瞻。
\b(\d)(?!\1)\d\b
反向引用将替换为第一组中匹配的内容:(\d)
如果以下字符与表达式匹配,则负前瞻会阻止匹配成功。
所以这基本上说匹配一个数字(我们称之为“N”)。如果下一个字符是N,则匹配失败。如果没有,请再匹配一个号码。