代码迭代 #2
stringVar = r'string'
通过使用效果很好将 var1 更改为原始字符串。使用下面的代码,我现在得到了一个例外:
Traceback (most recent call last):
File "regex_test.py", line 8, in <module>
pattern = re.compile(var2 + "(.*)")
File "/usr/lib/python2.7/re.py", line 190, in compile
return _compile(pattern, flags)
File "/usr/lib/python2.7/re.py", line 242, in _compile
raise error, v # invalid expression
sre_constants.error: unbalanced parenthesis
--
#!/usr/bin/python
import re
var1 = r'\\some\String\to\Match'
var2 = '\\\\some\\String\\'
pattern = re.compile(var2 + "(.*)")
found = pattern.match(var1, re.IGNORECASE)
if found:
print "YES"
else:
print "NO"
我试图在我的正则表达式中包含一个变量。这个问题与另一个问题有关,但通过使用编译模式与匹配中的变量略有不同。根据我读过的所有内容,下面的示例代码应该可以工作。
#!/usr/bin/python
import re
var1 = re.escape('\\some\String\to\Match') # A windows network share
var2 = "\\\\some\\String\\"
print var1 # Prints \\some\\String\ o\\Match
print var2 # Prints \\some\String\
pattern = re.compile(var2)
found = pattern.match(var1 + "(.*)", re.IGNORECASE)
if found:
print "YES"
else:
print "NO"
当我打印出我的变量时,我看到了一些奇怪的行为。我认为 re.escape 会在字符串中转义所有需要的字符。
当我在 Ubuntu 12.4.1 上执行 Python 2.7 中的代码时,出现以下异常
Traceback (most recent call last):
File "regex_test.py", line 11, in <module>
pattern = re.compile(var2)
File "/usr/lib/python2.7/re.py", line 190, in compile
return _compile(pattern, flags)
File "/usr/lib/python2.7/re.py", line 242, in _compile
raise error, v # invalid expression
sre_constants.error: bogus escape (end of line)
我错过了什么导致异常被抛出?