2012-06-03 41 views
1

這是一個菜鳥問題如何獲取JavaScript中找到的字符串的周圍文本?

假設我搜索字符串S的模式爲P。現在我想顯示字符串的子字符串,其圍繞着P。子字符串應該只有一行(即N個字符)並且包含整個個字。你如何在JavaScript中編碼?

例如:
S =「你好世界,歡迎宇宙」 P =「歡迎」,和N = 15。幼稚溶液給出「LD,歡迎」(之前和之後加入4個字符P)。我想「圍繞」到「世界,歡迎來到」。

正則表達式能幫助我嗎?

回答

2

這裏是正則表達式,你想:

/\s?([^\s]+\swelcome\s[^\s]+)\s?/i //very simple, no a strange bunch of [] and {} 

說明:

什麼你試圖匹配實際上是

「的世界,歡迎來到」

無前後,因此空間:

\s?  //the first space (if found) 
(  //define the string position you want 
[^\s]+ //any text (first word before "welcome", no space) 
\s  //a space 
welcome //you word 
\s  //a space 
[^\s]+ //the next world (no space inside) 
)   //that's it, I don't want the last space 
\s?  //the space at the end (if found) 

應用:

function find_it(p){ 
    var s = "Hello world, welcome to the universe", 
     reg = new RegExp("\\s?([^\\s]+\\s" + p + "\\s[^\\s]+)\\s?", "i"); 

    return s.match(reg) && s.match(reg)[1]; 
} 

find_it("welcome"); //"world, welcome to" 

find_it("world,"); //"Hello world, welcome" 

find_it("universe"); //null (because there is no word after "universe") 
1

我想,這是,你在找什麼。

$a = ($n - length of $p)/2 
/[a-zA-Z0-9]{$a}$p[a-zA-Z0-9]{$a}/ 

我用美元來顯示變量的位置。你沒有提供足夠的代碼來編寫一個具體的例子。

+0

這是什麼?爲什麼($ n - $ p的長度)/ 2'? –

+0

,因爲$ n是總長度減去搜索字符串的長度除以2,因爲他希望前後的長度相同。 – Oliver

+0

呃......他沒有那樣說。他說'我想「圍繞」它「 –

相關問題