2014-02-19 43 views
-1

所以我得到这样的客户端文件(4行显示如下)搜索不包含#instagram_h1和#instagram_h2但应该包含#instagram_h3

Some text #instagram_h1 #instagram_h2 some more text #instagram_h3 more texts 
Some text #instagram_h3 #instagram_h2 some more text #instagram_h1 more texts 
Some text #instagram_h2 some more text #instagram_h3 more texts 
Some text some more text #instagram_h3 more texts 

我找只搜索行线,包含#instagram_h3并放弃包含#instagram_h1和#instagram_h2中的任何一个或两者的行。 #instagram_h3将永远在场。

我尝试:

h1 = '#instagram_h1' 
h2 = '#instagram_h2' 
h3 = '#instagram_h3' 
result = re.search(r"(!h1|!h2)", str) 
print result 

这里结果总是无。任何人都可以请解释,我做错了什么?

+0

解释downvote? – NullException

回答

1

运算符没有正则表达式!。你可以做的是找到包含这些字符串,然后排除它们。

if re.search(r"#instagram_(h1|h2)\b", str): 
    # no good! 

注意如何我添加\b,以防止类似#instagram_h123从匹配。

或者,对于像这样的简单搜索,您可以跳过正则表达式并直接检查子字符串。

if '#instagram_h1' in str or '#instagram_h2' in str: 
    # no good! 

# or 

hashtags = ['#instagram_h1', '#instagram_h2'] 
if any(hashtag in str for hashtag in hashtags): 
    # sorry! 

注意,这些简单的测试将匹配#instagram_123#instagram_234,这可能不是你想要的。

+0

来自Perl的背景,我认为python有! (反转)。激情学会了。 – NullException