2013-07-03 28 views
1

即时尝试新的正则表达式模块的模糊功能。在这种情况下,我希望在那里找到与< = 1个错误的所有字符串匹配,但我无法与它新的正则表达式模块函数错误值。 Python

import regex 

statement = 'eol the dark elf' 
test_1 = 'the dark' 
test_2 = 'the darc' 
test_3 = 'the black' 

print regex.search('{}'.format(test_1),statement).group(0) #works 

>>> 'the dark' 

print regex.search('{}'.format(test_1){e<=1},statement).group(0) 

>>> print regex.search('{}'.format(test_1){e<=1},statement).group(0) #doesn't work 
             ^
SyntaxError: invalid syntax 

我也曾尝试

print regex.search('(?:drk){e<=1}',statement).group(0) #works 
>>> 'dark' 

但这。 。 。

print regex.search(('(?:{}){e<=1}'.format(test_1)),statement).group(0) #doesn't work 
>>> SyntaxError: invalid syntax 
+1

只有一个'('。应该是这样的:'print regex.search('(?:{}){e <= 1}'.format(test_1))。group(0)' – TobiMarg

+0

你把字符串正在搜索? –

回答

1

在您的第一个片段中,您忘记将{e<=1}放入字符串中。在你最后的片段中,我认为问题是,format试图处理{e<=1}本身。因此,无论您使用串联:

print regex.search(test_1 + '{e<=1}', statement).group(0) 

,或者你逃避字面括号,他们加倍:

print regex.search('{}{{e<=1}}'.format(test_1), statement).group(0) 

这可以很容易地后`serach`你需要扩展到

print regex.search('{}{{e<={}}}'.format(test_1, num_of_errors), statement).group(0) 
+0

我有点困惑如何使错误编号一个变量。让我们说错误= 2 ...当我尝试'{e <= {}}'时它不工作。格式(错误) –

+0

@ draconisthe0ry我刚刚意识到,字面大括号可以通过加倍来逃脱。我会编辑答案 –