Python如何匹配稍微不同的字符串中的子字符串

时间:2017-08-01 14:03:42

标签: python regex

我遇到以下问题,但无法找到解决方案。

我必须找到以下子字符串的确切开始和结束位置:

"hello world is a good idea for a T-shirt"

在任何可能的其他字符串中,例如:

"This is some string, that includes commas, and other punctuations. It also includes hello world, is a, good, idea for a T-shirt and other."

由于标点符号(逗号),find()不会给我一个结果。我正在尝试使用r"(Hello)[\W+] (world) [\W+]..."之类的正则表达式,但它也不起作用。有什么好主意吗?

编辑:

这是我的代码:

import re
text = "This is some string, that includes commas, and other punctuations. It also includes hello world, is a, good, idea for a T-shirt and other."
match = re.search(r"[\W+](hello)[\W+](world)[\W+](is)[\W+](a)[\W+](good)[\W+](idea)[\W+](for)[\W+](a)[\W+](T-shirt)", text)
print (match)

2 个答案:

答案 0 :(得分:1)

当您使用[\W+]时,您创建一个与单个字符匹配的字符类,可以是非单词字符(任何不是字母,数字或{{1的字符) }}或文字_符号。

使用+代替空格:

\W+

请参阅Python demo

import re text = "This is some string, that includes commas, and other punctuations. It also includes hello world, is a, good, idea for a T-shirt and other." match = re.search(r"hello\W+world\W+is\W+a\W+good\W+idea\W+for\W+a\W+T-shirt", text) if match: print("YES!") 匹配任何非字母,数字或\W字符和_的字符,使正则表达式引擎匹配这些字符的一次或多次。

要使代码更通用,可以使用空格分割初始字符串,然后使用正则表达式模式连接以匹配空格或逗号或点。

+

请参阅another Python demo

答案 1 :(得分:0)

试试这个:

 r'\bhello.*T-shirt\b'