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()
。后者总是将搜索定位到字符串的开头。如果您编辑您的答案,最好对其进行评论。我有一段时间不明白为什么这不管用。尽管开始的*
仍然毫无意义。