无法弄清楚需求的正则表达式模式(javascript拆分模式)

时间:2017-04-06 13:36:31

标签: javascript regex

我一直试图找出以下字符串的正则表达式模式&要求。

this. i s.a.string .but. so is . this

预期结果:

1 - "this. i s"
2 - "a"
3 - "string .but. so is . this"

必须在.上进行分离,但是,如果>之前或之后有空白,则它应该是前一个结果的一部分。

我一直尝试对以下内容进行修改(结果)

/[(^?=\.]+|[^?<=\.]+/g
1 - "this"
2 - "."
3 - " i s"
4 - "."
5 - "a"
6 - "."
7 - "string"

/[^?<=\.]+/g OR /[^\.]+/g
1 - "this"
2 - " i s"
3 - "a"
4 - "string"

编辑:更新字符串&amp;预期成绩。基于我在评论/答案中看到的不确定性已被删除。

3 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

逻辑:

  • 查找模式 not space,然后是.,然后是not space ,并将第一个not space替换为not space|
  • 现在使用|.拆分以获取您的群组列表

&#13;
&#13;
function getGroups(str){
  var replaceRegex = /(\S)(?=\.\S)/g;
  var g = str.replace(replaceRegex, "$1|").split("|.");
  console.log(g)
  return g;
}

getGroups("this. i s.a.string");
getGroups("this . i s.a.string");
getGroups("this . i 1.a.string");
getGroups("127.0.0.1");
&#13;
&#13;
&#13;

答案 1 :(得分:0)

试试这个正则表达式:

[^. ]+(( \.|\. | )[^. ]*)*

请参阅here工作原理。

答案 2 :(得分:0)

使用lookaheadlookbehind,拆分正则表达式为:

(?<! )\.(?! )

但JavaScript不支持后面的观点,其中一个技巧是:

var s = "this. i s.a.string .but. so is . this";
s.replace(/([^ ])\.(?! )/g, "$1__special__").split("__special__")
  1. 将分隔符替换为lookahead并将后面的组捕获替换为特殊分隔符
  2. 按新特殊分隔符分割