(= string)的正则表达式

时间:2014-03-30 08:50:34

标签: python regex string search match

我有一个包含数千行的文本文件。这是一个例子

line = .Falies/367. 11DG1550/11DG15537.Axiom=nt60
line = .Failies/367. 11DG1550/11DG15537.Axiom=nt50

我试图在最后提取字符串' nt60',' nt50'。

lines = line.split('=')
version = lines[-1]

问题是行尾字符将被包含在内('\n'

我想过使用正则表达式搜索来匹配从('=nt')开始的字符串 但我不知道我应该用什么来匹配=, word, number

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

你的第一种方法绝对没问题。您可以使用您使用第一种方法提取的字符串,然后将strip()应用于它:

strip()从字符串中删除所有前导和尾随空格和换行符。

>>> your_str = 'nt60\n'
>>> your_str.strip()
'nt60'

对于你的情况:

lines = line.rsplit('=',1)
version = lines[-1].strip()

答案 1 :(得分:1)

匹配= nt然后number的正则表达式是:

=(nt\d+)

在你的例子中:

line = .Falies/367. 11DG1550/11DG15537.Axiom=nt60 
line = .Failies/367. 11DG1550/11DG15537.Axiom=nt50 

它会返回两个匹配项:

MATCH 1
1.  [49-53] `nt60`
MATCH 2
1.  [105-109] `nt50`

说明:

`=` matches the character `=` literally 
1st Capturing group `(nt\d+)`
   `nt` matches the characters `nt` literally (case sensitive)  
   `\d` match a digit `[0-9]`  
   `+` Quantifier: Between one and unlimited times, as many times as possible,  
       giving back as needed  

如果您希望正则表达式与= word number匹配,则只需将nt替换为\w+即可匹配任何字词。

希望这会有所帮助。