python re.search(regex)用于搜索具有类似{{world}的模式的单词

python re.search(regex)用于搜索具有类似{{world}的模式的单词,python,regex,matching,Python,Regex,Matching,我在HTML文件中插入了自定义标记,如{{{name},{{{names}}。现在我想搜索与模式完全匹配的标记,比如{{world},而不仅仅是{world},{world},{world},{word},{world},等等。 我为 re.findall(r'\{(\w.+?)\}', html_string) 它返回遵循{world}、{world}、{world}模式的单词 那是我不想要的。我想完全匹配{{world}。有人能给我指点路吗?嗯,正则表达式不应该是: re.findall(

我在HTML文件中插入了自定义标记,如
{{{name}
{{{names}}
。现在我想搜索与模式完全匹配的标记,比如
{{world}
,而不仅仅是
{world}
{world}
{world}
{word}
{world}
,等等。 我为

re.findall(r'\{(\w.+?)\}', html_string)
它返回遵循{world}、{world}、{world}模式的单词
那是我不想要的。我想完全匹配{{world}。有人能给我指点路吗?

嗯,正则表达式不应该是:

re.findall(r'\{(\w.+?)\}', html_string)
'\{\{(\w.+?)\}\}'
好的,在评论之后,我更了解您的要求:

re.findall(r'\{(\w.+?)\}', html_string)
'\{\{\w+?\}\}'
应该对你有用

re.findall(r'\{(\w.+?)\}', html_string)
基本上,您需要{{任何n个单词字符,包括下划线}}。实际上,在这种情况下,您甚至不需要惰性匹配,因此可以删除表达式中的th

re.findall(r'\{(\w.+?)\}', html_string)
{{keyword1}}这样的东西{{keyword2}}
现在作为一个整体将不匹配

re.findall(r'\{(\w.+?)\}', html_string)
要仅获取关键字而不获取{{},请使用以下命令:

re.findall(r'\{(\w.+?)\}', html_string)
'(?<=\{\{)\w+?(?=\}\})'

(?嗯,正则表达式不应该是:

re.findall(r'\{(\w.+?)\}', html_string)
'\{\{(\w.+?)\}\}'
好的,在评论之后,我更了解您的要求:

re.findall(r'\{(\w.+?)\}', html_string)
'\{\{\w+?\}\}'
应该对你有用

re.findall(r'\{(\w.+?)\}', html_string)
基本上,您需要{{任何n个单词字符,包括下划线}}。在本例中,您甚至不需要惰性匹配,因此您可以删除表达式中的th

re.findall(r'\{(\w.+?)\}', html_string)
{{keyword1}}这样的东西{{keyword2}}
现在作为一个整体将不匹配

re.findall(r'\{(\w.+?)\}', html_string)
要仅获取关键字而不获取{{},请使用以下命令:

re.findall(r'\{(\w.+?)\}', html_string)
'(?<=\{\{)\w+?(?=\}\})'

”(?如果要匹配双花括号,应在正则表达式中指定它们:

re.findall(r'\{(\w.+?)\}', html_string)
re.findall(r'\{\{(\w[^}]?)\}\}', html_string)

如果要匹配双花括号,应在正则表达式中指定它们:

re.findall(r'\{(\w.+?)\}', html_string)
re.findall(r'\{\{(\w[^}]?)\}\}', html_string)
这个怎么样

re.findall(r'\{(\w.+?)\}', html_string)
re.findall('{{(\w+)}}', html_string)
或者,如果希望结果中包含大括号,请执行以下操作:

re.findall(r'\{(\w.+?)\}', html_string)
re.findall('({{\w+}})', html_string)
但是,如果您试图完成html模板,我建议您使用。

这个怎么样

re.findall(r'\{(\w.+?)\}', html_string)
re.findall('{{(\w+)}}', html_string)
或者,如果希望结果中包含大括号,请执行以下操作:

re.findall(r'\{(\w.+?)\}', html_string)
re.findall('({{\w+}})', html_string)

但是,如果您试图完成html模板,我建议使用。

这将不会匹配结果中的大括号,您希望这样吗

re.findall(r'\{(\w.+?)\}', html_string)
'\{\{(\w[^\{\}]+?)\}\}'

这将不匹配您的结果中的大括号,您想要吗

re.findall(r'\{(\w.+?)\}', html_string)
'\{\{(\w[^\{\}]+?)\}\}'

你说其他答案不起作用,但对我来说似乎是:

re.findall(r'\{(\w.+?)\}', html_string)
>>> import re
>>> html_string = '{{realword}} {fake1}} {{fake2} {fake3} fake4'
>>> re.findall(r'\{\{(\w.+?)\}\}', html_string)
['realword']
如果它不适合你,你需要提供更多的细节

re.findall(r'\{(\w.+?)\}', html_string)
编辑:以下内容如何?去掉点(
)并仅使用
\w
还允许您使用贪婪限定符,并适用于注释中的示例HTML:

re.findall(r'\{(\w.+?)\}', html_string)
>>> html_string = 'html>\n <head>\n </head>\n <title>\n </title>\n <body>\n <h1>\n T - Shirts\n </h1>\n <img src="March-Tshirts/skull_headphones_tshirt.jpg" />\n <img src="/March-Tshirts/star-wars-t-shirts-6.jpeg" />\n <h2>\n we - we - we\n </h2>\n {{unsubscribe}} -- {{tracking_beacon} -- {web_url}} -- {name} \n </body>\n</html>\n'
>>> re.findall(r'\{\{(\w+)\}\}', html_string)
['unsubscribe']
>>>html\u string='html>\n\n\n\n\n\n T恤衫\n\n\n\n\n我们-我们\n\n{{取消订阅}--{跟踪{信标}--{web\u url}--{name}\n\n
>>>re.findall(r'\{(\w+)\}}',html\u字符串)
[“取消订阅”]

\w
匹配字母数字字符和下划线;如果需要匹配更多字符,可以将其添加到集合中(例如,
[\w\+]
也匹配加号)。

你说其他答案不起作用,但对我来说似乎是:

re.findall(r'\{(\w.+?)\}', html_string)
>>> import re
>>> html_string = '{{realword}} {fake1}} {{fake2} {fake3} fake4'
>>> re.findall(r'\{\{(\w.+?)\}\}', html_string)
['realword']
如果它不适合你,你需要提供更多的细节

re.findall(r'\{(\w.+?)\}', html_string)
编辑:以下内容如何?去掉点(
)并仅使用
\w
还允许您使用贪婪限定符,并适用于注释中的示例HTML:

re.findall(r'\{(\w.+?)\}', html_string)
>>> html_string = 'html>\n <head>\n </head>\n <title>\n </title>\n <body>\n <h1>\n T - Shirts\n </h1>\n <img src="March-Tshirts/skull_headphones_tshirt.jpg" />\n <img src="/March-Tshirts/star-wars-t-shirts-6.jpeg" />\n <h2>\n we - we - we\n </h2>\n {{unsubscribe}} -- {{tracking_beacon} -- {web_url}} -- {name} \n </body>\n</html>\n'
>>> re.findall(r'\{\{(\w+)\}\}', html_string)
['unsubscribe']
>>>html\u string='html>\n\n\n\n\n\n T恤衫\n\n\n\n\n我们-我们\n\n{{取消订阅}--{跟踪{信标}--{web\u url}--{name}\n\n
>>>re.findall(r'\{(\w+)\}}',html\u字符串)
[“取消订阅”]

\w
匹配字母数字字符和下划线;如果需要匹配更多字符,可以将其添加到集合中(例如,
[\w\+]
也匹配加号)。

否这也将匹配{word}{{word}的模式,就像那样…:(它将如何匹配?请注意,regexit中显式的两个大括号应该完全匹配这样的模式{world}{'html>\n\n\n\n\n T-Shirts\n\n\n\n we-we-we\n\n{unsubscribe}--{tracking\u beacon}--{web\u url}--{name}\n\n\n您是否尝试过我在代码中给出的上述模式?否,这也将匹配{word}{{word}的模式,如…:(它将如何匹配?请注意,regexit中显式的两个大括号应该与模式{{world}完全匹配)像那样onlyq='html>\n\n\n\n\n\n\n\n T恤衫\n\n\n\n我们-我们\n\n{unsubscribe}--{{tracking\u beacon}--{web\u url}--{name}\n\n\n您尝试过我在代码中给出的上述模式吗?这也将匹配类似{word world}那样的话就不应该匹配了,请看我的编辑。在这种情况下,你必须指定“not}”,而不是仅仅使用一个简单的点。阿希姆,你需要在正则表达式中使用某种量词,因为目前它只匹配一个单词字符,并且在两个大括号之间有一个可选的字符不是“}”。这也会匹配类似{word}的模式{{world}那样的话就不应该匹配请看我的编辑。在这种情况下,你必须指定“not}”,而不是仅仅使用一个简单的点。阿希姆,你需要在正则表达式中使用某种量词,因为目前它只匹配一个单词字符,并且可选的字符不是'},在两个大括号之间。您是对的,这对您的示例有效,但当我尝试使用例如:html_string='html>\n\n\n\n\n T恤衫\n\n\n\n我们-我们\n\n\n{{unsubscribe}--{tracking_beacon}--{web_url}--{name}\n\n\n它给出的结果是:['unsubscribe','tracking_beacon}{url}{web}]您是对的,这对您的示例有效,但当我尝试使用例如:html_string='html>\n\n\n\n\n\n T恤衫\n\n\n\n\n我们-我们\n\n\n{unsubscribe}--{{tracking_beacon}--{web_url}--{name}
re.findall(r'\{(\w.+?)\}', html_string)