这是一个菜鸟问题
假设我在字符串S
中搜索模式P
。现在我想显示字符串的子字符串,它围绕P
。子字符串应该只有一行(即N
个字符)并包含整个字。你会如何在JavaScript
编码?
例如:
让S
=“Hello world,欢迎来到宇宙”,P
=“welcome”,N
= 15.天真的解决方案给出“ld,welcome to”(添加4个字符)在P
之前和之后。我想把它“圆”到“世界,欢迎来到”。
正则表达式可以帮助我吗?
答案 0 :(得分: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 :(得分:1)
我想,这就是你正在寻找的东西。
$a = ($n - length of $p)/2
/[a-zA-Z0-9]{$a}$p[a-zA-Z0-9]{$a}/
我用美元来显示变量的位置。您没有提供足够的代码来编写具体示例。