我遇到以下问题,但无法找到解决方案。
我必须找到以下子字符串的确切开始和结束位置:
"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)
答案 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
字符和_
的字符,使正则表达式引擎匹配这些字符的一次或多次。
要使代码更通用,可以使用空格分割初始字符串,然后使用正则表达式模式连接以匹配空格或逗号或点。
+
答案 1 :(得分:0)
试试这个:
r'\bhello.*T-shirt\b'