![](/img/trans.png)
[英]RegEx - Extract words that contains a substring, from a comma seperated string
[英]RegEx: Extract substring from a string which may contain several number of '{' and '}'
`<html>
<head>
<title>DailyHoroscope.com</title>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
{if $contact['timezone']}
{assign var=local_tz value=$contact['timezone']}
{else}
{assign var=local_tz value='America/New_York'}
{/if}
{assign var=tracking_params value="utm_medium={$medium}&utm_source={$source}&utm_campaign={$campaign}"}
</head>
<body style="background:#fff;">
</body>
</html>`
在這段代碼中,我需要在{}內獲取子字符串。 我正在使用此RegEx
/\{([^}]*)\}/mig
在僅包含一個{和}的那些子字符串類型的情況下,它的工作正常。 喜歡
{if $contact['timezone']}
但是如果是這個字符串--->
{assign var=tracking_params value="utm_medium={$medium}&utm_source={$source}&utm_campaign={$campaign}"}
我期望得到整個字符串,但它返回了我
{assign var=tracking_params value="utm_medium={$medium},
{$source} and {$campaign}
這是正確的,因為我的正則表達式在獲得第一個'}'之后就結束了; 有什么方法可以使用regEx獲取包含相同數量的'{'和'}'的字符串? 什么是RegEx?
如果您只有1級嵌套花括號,則可以使用
\{((?:[^{}]*\{[^{}]*\})*[^}]*)\}
觀看演示
火柴:
if $contact['timezone']
assign var=local_tz value=$contact['timezone']
else
assign var=local_tz value='America/New_York'
/if
assign var=tracking_params value="utm_medium={$medium}&utm_source={$source}&utm_campaign={$campaign}"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.