0

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

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

这是我的代码:

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,

太好了……我正在取回我需要的东西(还有一些额外的东西)。我实际上不想要逗号。

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

4

5 回答 5

2

因为,逗号,是这里的分隔符,所以只需在你的正则表达式中否定它

match = re.search(r'FullName=[^,]+', str)
于 2013-09-13T21:15:50.050 回答
1

将除逗号之外的所有内容都放在一个保存组中:

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

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

印刷

FullName=TECIBW04 TECIBW04
于 2013-09-13T21:13:56.093 回答
1

使用spliton怎么样,

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"
于 2013-09-13T21:14:56.867 回答
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 的 RH =

match=re.search(r'^FullName=([^,]+)',str)
if match:
    print match.group(1)  ##'found a match'
else:
    print 'ainnussin zer'
于 2013-09-13T21:16:00.283 回答
0

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

m = re.search(r'(FullName=.*?),', str)
if m:
   print m.group(1)
于 2013-09-13T22:47:47.137 回答