Python:重新发布;关于findall();
请参阅上面的代码。这里我想通过正则表达式在字符串中找到寄存器名,即wub。我已经为此写了报告。如果您运行这段代码,它将给出类似于['wub']的输出,但我只需要wub,不需要括号或引号。那么这里要做什么修改呢Python:重新发布;关于findall();,python,regex,python-2.7,Python,Regex,Python 2.7,请参阅上面的代码。这里我想通过正则表达式在字符串中找到寄存器名,即wub。我已经为此写了报告。如果您运行这段代码,它将给出类似于['wub']的输出,但我只需要wub,不需要括号或引号。那么这里要做什么修改呢 非常感谢您的帮助。您可以使用re.search()(或re.match()-取决于您的需要)并获取捕获组: string = "RegisterParameter uri wub {" RegisterName = re.findall("RegisterParameter uri ([^
非常感谢您的帮助。您可以使用
re.search()
(或re.match()
-取决于您的需要)并获取捕获组:
string = "RegisterParameter uri wub {"
RegisterName = re.findall("RegisterParameter uri ([^ ]*) {",string)
print 'RegisterName is :',RegisterName
此外,您可能希望使用\w*
而不是[^]*
<代码>\w匹配任何单词字符
另见:
re.search()
(或re.match()
-取决于您的需要)并获取捕获组:
string = "RegisterParameter uri wub {"
RegisterName = re.findall("RegisterParameter uri ([^ ]*) {",string)
print 'RegisterName is :',RegisterName
此外,您可能希望使用\w*
而不是[^]*
<代码>\w匹配任何单词字符
另见:
注册表名
是一个列表
,只有一个str
元素。如果问题是仅打印,您可以尝试:
>>> import re
>>> s = "RegisterParameter uri wub {"
>>> match = re.search("RegisterParameter uri ([^ ]*) {", s)
>>> match.group(1) if match else "Nothing found"
'wub'
输出:
print 'RegisterName is :', RegisterName[0]
PS:
- 如果不确定变量的类型,请尝试打印它:
RegisterName is : wub
- 我建议您使用,名称为
的标识符通常用作类的名称。对于变量,可以使用SomeName
或some\u name
register\u name
注册表名
是一个列表
,只有一个str
元素。如果问题是仅打印,您可以尝试:
>>> import re
>>> s = "RegisterParameter uri wub {"
>>> match = re.search("RegisterParameter uri ([^ ]*) {", s)
>>> match.group(1) if match else "Nothing found"
'wub'
输出:
print 'RegisterName is :', RegisterName[0]
PS:
- 如果不确定变量的类型,请尝试打印它:
RegisterName is : wub
- 我建议您使用,名称为
的标识符通常用作类的名称。对于变量,可以使用SomeName
或some\u name
register\u name
re.search
将找不到任何东西时,这将引发异常。我认为re.search
的行返回None
,而不是'wub'
@Elisha好的,我应该一次停止做300件事:)当re.search
将找不到任何东西时,这会引发一个异常。我认为re.search
的行返回None
,而不是'wub'
@Elisha好的,我应该一次停止做300件事:)严格来说,使用find\u all()
用于仅查找第一个匹配项。试想一下:例如,你会从一个表中获取所有数据,以便只获取第一行吗?虽然这样做可以让事情在这里顺利进行,但是,是的。严格来说,使用find_all()
仅查找一个第一匹配项似乎是不正确的。试想一下:例如,您是否会从表中获取所有数据,以便只获取第一行数据?虽然它使这里的工作正常,但确实如此。