2012-06-14 41 views
0

我正在嘗試我最好的最好是讓我的頭繞過正則表達式,但沒有太多的運氣。正則表達式搜索兩個字符串之間的內容的字符串

我想在一個字符串中搜索文本,我知道字符串是如何開始的,而且我知道字符串是如何結束的,我想返回包含開始和結束的字符串之間的所有文本。

開始搜索= [{ 「LX」:

結束搜索= }]

[{ 「LX」:variablehere}]

到目前爲止,我已經嘗試過

/^\[\{"lx":(*?)\}\]/; 

/(\[\{"lx":)(*)(\}\])/; 

但要沒有真正的果...誰能幫助?

非常感謝

回答

1

你可能犯了錯誤,認爲*是通配符。使用期間(.),而你會沒事的。

此外,你確定你想要規定零或更多?如果有必須是一個值,請使用+(一個或多個)。

的Javascript:

'[{"lx":variablehere}]'.match(/^\[\{"lx":(.+?)\}\]/); 
+0

優秀的。+解決了我的問題!非常感謝! –

+0

請將答案標記爲已接受,然後:) – Utkanos

+0

您可能希望像ioseb那樣使'+'非貪婪 – georg

1

*明星人物乘以前面的字符。在你的情況下,沒有這種性格。您應該將.(意思是「任何字符」)或\S(意思是「任何非空白字符」)等更具體的內容。

1

可能的解決辦法:

var s = '[{"lx":variablehere}]'; 
var r = /\[\{"(.*?)":(.*?)\}\]/; 
var m = s.match(r); 

console.log(m); 

結果此陣:

[ '[{"lx":variablehere}]', 
    'lx', 
    'variablehere', 
    index: 0, 
    input: '[{"lx":variablehere}]' ] 
1
\[\{"lx"\:(.*)\}\] 

這應該爲你工作。您可以通過\ 1符號到達捕獲的變量。

0

試試這個:

^\[\{\"lx\"\:(.*)\}\]$ 

之間的所有文字[{ 「LX」:與}]你會在逆向引用變量找到(像\ $ 1,取決於編程語言)。

相關問題