python中正确的正则表达式

python中正确的正则表达式,python,regex,scrapy,Python,Regex,Scrapy,我在提取粗体字时遇到了一个小问题: Médoc,胭脂 2ème Vin,玛歌,玫瑰 2ème vin,佩萨克-莱奥格南,布兰科 我要进一步澄清我的问题: 我试图从网页中提取一些信息,所以每次我发现一种句子,但我感兴趣的是粗体。我给你树上的地址: () () re(r'\s*\w+-\w+-\w+\w+-\w+\w+\w+\w+[^Rouge,Blanc,Rosé]) 有什么想法吗?似乎它总是逗号分隔列表中倒数第二个学期?您可以拆分并选择倒数第二个,例如: >>> myStr

我在提取粗体字时遇到了一个小问题:

Médoc,胭脂
2ème Vin,玛歌,玫瑰
2ème vin,佩萨克-莱奥格南,布兰科

我要进一步澄清我的问题: 我试图从网页中提取一些信息,所以每次我发现一种句子,但我感兴趣的是粗体。我给你树上的地址:

  • ()

  • ()

    re(r'\s*\w+-\w+-\w+\w+-\w+\w+\w+\w+[^Rouge,Blanc,Rosé])


有什么想法吗?

似乎它总是逗号分隔列表中倒数第二个学期?您可以拆分并选择倒数第二个,例如:

>>> myStr = '2ème vin, Pessac-Léognan, Blanc'
>>> res = myStr.split(', ')[-2]
否则,如果你想单独使用正则表达式。。。我建议:

>>> res = re.search(r'([^,]+),[^,]+$', myStr).group(1)

如果有必要,可以对空格进行修剪。

在逗号分隔的列表中,它似乎总是倒数第二个词?您可以拆分并选择倒数第二个,例如:

>>> myStr = '2ème vin, Pessac-Léognan, Blanc'
>>> res = myStr.split(', ')[-2]
否则,如果你想单独使用正则表达式。。。我建议:

>>> res = re.search(r'([^,]+),[^,]+$', myStr).group(1)

如有必要,可对空格进行修剪。

您可以使用“积极向前看”来查看
Rouge
Blanc
Rose
是否在我们要查找的单词后面:

>>> import re
>>> l = [u"Médoc, Rouge", u"2ème Vin, Margaux, Rosé", u"2ème vin, Pessac-Léognan, Blanc"]
>>> for s in l:
...     print re.search(ur'([\w-]+)(?=\W+(Rouge|Blanc|Rosé))', s, re.UNICODE).group(0)
... 
Médoc
Margaux
Pessac-Léognan

您可以使用正向前瞻查看
Rouge
Blanc
rose
是否在我们要查找的单词后面:

>>> import re
>>> l = [u"Médoc, Rouge", u"2ème Vin, Margaux, Rosé", u"2ème vin, Pessac-Léognan, Blanc"]
>>> for s in l:
...     print re.search(ur'([\w-]+)(?=\W+(Rouge|Blanc|Rosé))', s, re.UNICODE).group(0)
... 
Médoc
Margaux
Pessac-Léognan


这里的标准是什么?这里的标准是什么?最后一个输出应该是
Pessac-Léognan
而不是
Léognan
@MartijnPieters是的,我想你抓住了他。@alecxe-1在你的回答中是我的(我的连接被拉断了,所以无法评论)+1现在;)@你是说我刚刚收到的连续否决票?耸耸肩,不管怎样,今晚都会恢复。我很确定是谁干的。@MartijnPieters是的,他因为
eval()
而非常沮丧。最后的输出应该是
Pessac-Léognan
而不是
Léognan
@MartijnPieters是的,我想你抓住了他。@alecxe-1在你的回答中是我写的(我的连接被拉断了,所以无法评论)+1现在;)@你是说我刚刚收到的连续否决票?耸耸肩,不管怎样,今晚都会恢复。我很确定是谁干的。@MartijnPieters是的,他因为
eval()
而非常沮丧。不要用
str
作为变量名。@AshwiniChaudhary好的,是否有函数的名称包含
str
str
是python中的内置类型。感谢您的回答,但我必须进一步澄清我的问题:我试图从网页中提取一些信息,因此每次我都会发现一种句子,但我感兴趣的是粗体。我给你树上的地址:--[link]()@xeroxSO哦,但这改变了一切。。。您可以试试这个,它会查找您要查找的特定标题:
res=re.search(r.*?\s([^,]+),[^,]+”,myPage)。组(1)
。不要将
str
用作变量名。@AshwiniChaudhary好的,是否有函数的名称包含
str
str
是python中的内置类型。感谢您的回答,但我必须进一步澄清我的问题:我试图从网页中提取一些信息,因此每次我都会发现一种句子,但我感兴趣的是粗体。我给你树上的地址:--[link]()@xeroxSO哦,但这改变了一切。。。您可以试试这个,它会查找您要查找的特定标题:
res=re.search(r'.*?\s([^,]+),[^,]+”,myPage)。组(1)