這是一個菜鳥問題如何獲取JavaScript中找到的字符串的周圍文本?
假設我搜索字符串S
的模式爲P
。現在我想顯示字符串的子字符串,其圍繞着P
。子字符串應該只有一行(即N
個字符)並且包含整個個字。你如何在JavaScript
中編碼?
例如:
讓S
=「你好世界,歡迎宇宙」 P
=「歡迎」,和N
= 15。幼稚溶液給出「LD,歡迎」(之前和之後加入4個字符P
)。我想「圍繞」到「世界,歡迎來到」。
正則表達式能幫助我嗎?
這是一個菜鳥問題如何獲取JavaScript中找到的字符串的周圍文本?
假設我搜索字符串S
的模式爲P
。現在我想顯示字符串的子字符串,其圍繞着P
。子字符串應該只有一行(即N
個字符)並且包含整個個字。你如何在JavaScript
中編碼?
例如:
讓S
=「你好世界,歡迎宇宙」 P
=「歡迎」,和N
= 15。幼稚溶液給出「LD,歡迎」(之前和之後加入4個字符P
)。我想「圍繞」到「世界,歡迎來到」。
正則表達式能幫助我嗎?
這裏是正則表達式,你想:
/\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")
我想,這是,你在找什麼。
$a = ($n - length of $p)/2
/[a-zA-Z0-9]{$a}$p[a-zA-Z0-9]{$a}/
我用美元來顯示變量的位置。你沒有提供足夠的代碼來編寫一個具體的例子。
這是什麼?爲什麼($ n - $ p的長度)/ 2'? –
,因爲$ n是總長度減去搜索字符串的長度除以2,因爲他希望前後的長度相同。 – Oliver
呃......他沒有那樣說。他說'我想「圍繞」它「 –