2015-05-11 102 views
1
C:\Users\dibyajyo>python                
Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32  
Type "help", "copyright", "credits" or "license" for more information.     
>>>                     
>>>                     
>>> import re                   
>>> outString = 'DiagnosticPath = fs0:\\efi\\tools'         
>>> print outString                 
DiagnosticPath = fs0:\efi\tools              
>>> expString = 'DiagnosticPath = fs0:\\efi\\tools'         
>>> print expString                 
DiagnosticPath = fs0:\efi\tools              
>>> matchObj = re.search(expString, outString, re.M|re.I)        
>>> if matchObj:                  
... print matchObj.group()               
...                     
>>> 

兩個expStringoutString字符串相同但不知道爲什麼,我沒有找到任何匹配...蟒蛇正則表達式無法匹配反斜槓字符串參與

+3

您是否嘗試過使用原始字符串表達式? 'expString = r'DiagnosticPath = fs0:\\ efi \\ tools'' – Felk

+0

這正是我想嘗試後發佈的內容。遲到了31秒。 – lanenok

回答

2

報價從python's re documentation

正則表達式使用反斜線字符('\')來表示特殊形式或允許使用特殊字符而不用調用其特殊含義。這與Python在字符串文字中用於相同目的的相同字符的使用相沖突;例如,要匹配文字反斜線,可能必須將'\\\\'寫爲模式字符串,因爲正則表達式必須是\\,並且每個反斜槓必須在常規Python字符串文本內表示爲\\。

解決方法是使用Python的原始字符串符號表示正則表達式模式;在以'r'爲前綴的字符串文字中不以任何特殊方式處理反斜槓。所以r「\ n」是包含'\'和'n'的兩個字符的字符串,而「\ n」是包含換行符的單字符字符串。通常,模式將使用此原始字符串表示法以Python代碼表示。

所以如果你使用:

expString = r'DiagnosticPath = fs0:\\efi\\tools' 

您的代碼應工作。

+0

非常感謝它與r表達式一起工作 –

0

See this answer

import re 

expString = r'DiagnosticPath = fs0:\\efi\\tools' 
outString = 'DiagnosticPath = fs0:\\efi\\tools' 

matchObj = re.search(expString, outString, re.M|re.I) 

print matchObj.group() 
相關問題