1

这是一个菜鸟问题

假设我在一个字符串中搜索S一个模式P。现在我想显示一个字符串的子字符串,它围绕着P. 子字符串应该只有一行(即N字符)并包含整个单词。你将如何编码JavaScript

例如:
Let S= "Hello world, welcome to the universe", P= "welcome", and N= 15. 天真的解决方案给出了 "ld, welcome to "(在 之前和之后添加 4 个字符P)。我想把它“四舍五入”到“世界,欢迎来到”。

正则表达式可以在这里帮助我吗?

4

2 回答 2

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")
于 2012-06-03T17:50:22.623 回答
1

我想,这就是你要找的东西。

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

我用美元来显示变量在哪里。您没有提供足够的代码来编写具体示例。

于 2012-06-03T17:50:16.103 回答