我在字符串中有以下内容(来自DB的查询),例如:
def target_hit(mouse, target):
x_range = range(target.x, target.x + 60)
y_range = range(target.y, target.y + 60)
target_rect = itertools.product(x_range, y_range)
return (mouse.x, mouse.y) in targe_frame
# and somewhere down in the code
if target_hit(mouse, target):
# do stuff
所以我只想提取$fulltext = "Thank you so much, {gallery}art-by-stephen{/gallery}. As you know I fell in love with it from the moment I saw it and I couldn’t wait to have it in my home!"
标签之间的内容,我正在执行以下操作,但它不起作用:
{gallery}
有什么建议吗?
答案 0 :(得分:1)
试试这个:
$regexPatternGallery= '/\{gallery\}(.*)\{\/gallery\}/';
你需要在它之前转义/和{以及\。而你在哪里缺少模式的开始和结束。
答案 1 :(得分:0)
与Andreas的答案类似,但在([^"]*?)
$regexPatternGallery= '/\{gallery\}([^"]*?)\{\/gallery\}/';
/
放在Regex字符串的开头和结尾。这是PHP必须的,与其他编程语言不同。{
,}
,/
是可以混淆为正则表达式逻辑的字符,因此您必须使用\
\{
来转义它。 ?
使字符串变为非贪婪,从而节省内存。它在面对这种字符串"blabla {galery}you should only get this{/gallery} but you also got this instead.{/gallery} Rarely happens but be careful anyway"
时避免了错误。答案 2 :(得分:0)
试试这个RegEx:
\{gallery\}(.*?)\{\/gallery\}
您的RegEx问题在于您没有在结束/
中逃避{gallery}
。您还需要转义{
和}
。
您应该使用.*?
进行惰性匹配,否则如果一个字符串中有2个标记,则会将它们组合在一起。即{gallery}by-joe{/gallery} and {gallery}by-tim{/gallery}
最终会成为:
by-joe{/gallery} and {gallery}by-tim
但是,使用延迟匹配,您将得到2个结果:
by-joe
by-tim