Python 正则表达式:如何使用正则表达式提取给定单词?

Python 正则表达式:如何使用正则表达式提取给定单词?,python,regex,Python,Regex,我如何从以下内容中提取“摔跤”一词: type=weaksubj len=1 word1=wrestle pos1=verb stemmed1=y priorpolarity=negative 使用正则表达式?您的正则表达式应该是这样的 /.*word1=(\w+)/ 使用:/word1=(\w+)/给定以下正则表达式 /word1=(\w+)/ …1美元或任何你第一场比赛的语言都是摔跤。假设它总是用空格隔开 word1=([^ ]+) 然后,您可以通过第一组匹配获得值。问题不是很清楚,

我如何从以下内容中提取“摔跤”一词:

type=weaksubj len=1 word1=wrestle pos1=verb stemmed1=y priorpolarity=negative

使用正则表达式?

您的正则表达式应该是这样的

/.*word1=(\w+)/

使用:
/word1=(\w+)/
给定以下正则表达式

/word1=(\w+)/

…1美元或任何你第一场比赛的语言都是摔跤。

假设它总是用空格隔开

word1=([^ ]+)

然后,您可以通过第一组匹配获得值。

问题不是很清楚,但我想这就是您要寻找的:

word1=(\w+)
你的比赛将在第一组。下面是一些示例Python代码:

import re
yourstring = 'type=weaksubj len=1 word1=wrestle pos1=verb stemmed1=y priorpolarity=negative'

m = re.search(r'word1=(\w+)', yourstring)
print m.group(1)
如图所示。更普遍的解决方案:

import re
def get_attr(str, attr):
    m = re.search(attr + r'=(\w+)', str)
    return None if not m else m.group(1)

str = 'type=weaksubj len=1 word1=wrestle pos1=verb stemmed1=y priorpolarity=negative'

print get_attr(str, 'word1')  # wrestle
print get_attr(str, 'type')   # weaksubj
print get_attr(str, 'foo')    # None

也可在

上找到,当str.split看起来足够时,可能不需要re:

>>> s = "type=weaksubj len=1 word1=wrestle pos1=verb stemmed1=y priorpolarity=negative"
>>> dd = dict(ss.split('=',1) for ss in s.split())
>>> dd['word1']
'wrestle'

视情况而定。您正在查找“word1=”之后的第一个单词吗?它可以有大写和小写字符吗?其他特殊角色?我发现,一旦你想到这些事情,正则表达式几乎是自己写的。是的,谢谢你。编辑。非贪婪匹配导致正则表达式仅匹配单个字符:我相信这是
result=re.match(模式、字符串)
@Ruel:你想要的是
re.search()
,而不是
re.match()
。后者总是将搜索定位到字符串的开头。如果您编辑您的答案,最好对其进行评论。我有一段时间不明白为什么这不管用。尽管开始的
*
仍然毫无意义。