正则表达式用于固定字符串,后跟字符,最多为分隔符

时间:2013-09-13 21:11:26

标签: python regex comma

我已经用尽了自己尝试构建正确的正则表达式或者只是从我正在解析的文件中删除逗号。基本上,我匹配一个特定的字符串,然后是跟随该字符串的任何内容,直到逗号我需要在逗号之前获取子字符串,不包括逗号。我想我可以使用正则表达式执行此操作或在代码中进一步删除逗号。

我对此很新,所以可能是基本的东西,但似乎无法在我的搜索中找到正确的东西

这是我的代码:

import re

str = "FullName=TECIBW04 TECIBW04, TargetResource=k2vFe6yPvBoEdrmrE9t3i5UE2muLVW,"

match = re.search(r'FullName=.+?,', str)


if match:
    print match.group()  ##'found a match'
else:
    print 'ainnussin zer'

我明白了:

FullName=TECIBW04 TECIBW04,

太棒了......我回来了我需要的东西(还有一点额外的东西)。我实际上不想要逗号。

摆脱或不包括那个吸盘的最佳方法是什么?

5 个答案:

答案 0 :(得分:2)

因为,逗号,是此处的分隔符,只需在正则表达式中将其否定为

match = re.search(r'FullName=[^,]+', str)

答案 1 :(得分:1)

将除逗号以外的所有内容放入保存组:

match = re.search(r'(FullName=.+?),', str)

if match: print match.group(1) ##'found a match' else: print 'ainnussin zer'

打印

FullName=TECIBW04 TECIBW04

答案 2 :(得分:1)

如何在split上使用,

str.split(',')[0]

修改

这些是没有正则表达式的方法。

为了检查字符串是否以另一个子字符串开头,您可以使用

if str.startswith("FullName="): 
    print str.split(',')[0]
else:
    print "ainnussin zer"

要在一行中执行此操作,您可以尝试

print str.split(',')[0] if str.startswith("FullName=") else "ainnussin zer"

答案 3 :(得分:1)

您也可以使用str.partition:

>>> str = "FullName=TECIBW04 TECIBW04, TargetResource=k2vFe6yPvBoEdrmrE9t3i5UE2muLVW,"
>>> str.partition(',')
('FullName=TECIBW04 TECIBW04', ',', ' TargetResource=k2vFe6yPvBoEdrmrE9t3i5UE2muLVW,')
>>> str.partition(',')[0]
'FullName=TECIBW04 TECIBW04'

如果您打算使用正则表达式,我会使用它:

match=re.search(r'^FullName=[^,]+',str)
if match:
    print match.group(0)  ##'found a match'
else:
    print 'ainnussin zer'

如果您只是想捕获=

的RH,请执行此操作
match=re.search(r'^FullName=([^,]+)',str)
if match:
    print match.group(1)  ##'found a match'
else:
    print 'ainnussin zer'

答案 4 :(得分:0)

将您想要匹配的内容放在捕获组内。

m = re.search(r'(FullName=.*?),', str)
if m:
   print m.group(1)