无法找出需求的正则表达式模式(javascript拆分模式)
我一直在尝试为以下字符串和需求找出一个正则表达式模式无法找出需求的正则表达式模式(javascript拆分模式),javascript,regex,Javascript,Regex,我一直在尝试为以下字符串和需求找出一个正则表达式模式 this. i s.a.string .but. so is . this 预期结果: 1 - "this. i s" 2 - "a" 3 - "string .but. so is . this" 必须在上进行分离,但是,如果在之前或之后有一个空格,则它应该是前面结果的一部分 我一直在尝试以下方面的变化(结果) /[(^?=\.]+|[^?您可以尝试以下方法: 逻辑: 查找模式非空格后接后接非空格,并将第一个非空格替换为非空格 现在使
this. i s.a.string .but. so is . this
预期结果:
1 - "this. i s"
2 - "a"
3 - "string .but. so is . this"
必须在
上进行分离,但是,如果在之前或之后有一个空格,则它应该是前面结果的一部分
我一直在尝试以下方面的变化(结果)
/[(^?=\.]+|[^?您可以尝试以下方法:
逻辑:
- 查找模式
非空格
后接
后接非空格
,并将第一个非空格
替换为非空格
- 现在使用
|.
进行拆分,以获得您的组列表
函数getGroups(str){
var replaceRegex=/(\S)(?=\.\S)/g;
var g=str.replace(replaceRegex,“$1 |”)。拆分(“|”。”;
控制台日志(g)
返回g;
}
getGroups(“this.i s.a.string”);
getGroups(“this.i s.a.string”);
getGroups(“this.i 1.a.string”);
getGroups(“127.0.0.1”);
尝试使用此正则表达式:
[^. ]+(( \.|\. | )[^. ]*)*
看看它是如何工作的。使用向前看
和向后看
,拆分正则表达式将是:
(?<! )\.(?! )
将分隔符替换为lookahead
,并将后面的组捕获替换为特殊分隔符
由新的特殊分隔符拆分
使用“this.i s.a.string”
\w-不等同于“not space”,后者是“\s”@Rajesh与全局标志一起使用(/…/g
),这在一行程序中工作,而不是。谢谢。问题是js没有look-behind功能:)
(?<! )\.(?! )
var s = "this. i s.a.string .but. so is . this";
s.replace(/([^ ])\.(?! )/g, "$1__special__").split("__special__")