我需要在点上分割这样的字符串。但我不想在字符串内部分割('或")。我没有解析文件;只是一个没有换行符的简单字符串。
part 1;"12:'xyz@gmail.com'.8:'23'.25:'hello'.6:6"
结果应该是:
part 1 "12:'xyz@gmail.com'"
part 2 "8:'23'"
part 3 "25:'hello'"
part 4 "6:6"
我认为这可以用正则表达式完成,但如果没有;我对其他方法持开放态度。
修改的
我有
str = "12:'xyz@gmail.com'.8:'23'.25:'hello'.6:6"
我希望得到
str[0]=12:xyz@gmail.com str[1]=8:'23'
str[2]=25:'hello'
str[3]=6:6
但每当我分开它时,就会显示出来:
str[0]=12:xyz@gmail
str[1]=com
str[2]=8:'23'
str[3]=25:'hello'
str[4]=6:6
答案 0 :(得分:3)
您可以匹配以下正则表达式:
/[^.']+(?:'[^']*')?/g
请参阅regex demo
详细说明:
[^.']+
- '
和.
(?:'[^']*')?
- 一个可选的'...'
字符串('
后跟0 {+ 1}}以外的0 +字符,后跟'
。根据内容的不同,您可以使用增强版:
'
请参阅another demo
演示1(简化):
/[^.']*(?:'[^']*'[^.']*)*/g

演示2(如果内容更复杂):
var re = /[^.']+(?:'[^']*')?/g;
var str = '12:\'xyz@gmail.com\'.8:\'23\'.25:\'hello\'.6:6';
var m = str.match(re);
document.body.innerHTML = "<pre>" + JSON.stringify(m, 0, 4) + "</pre>";
&#13;
答案 1 :(得分:2)
我不确定拆分,但你可以像这样使用replace
(容易发生灾难性的回溯)
((?:(?:'[^']+')*[^.']*)*)(?:\.|$)
<强> Regex Demo 强>
JS代码
var re = /((?:(?:'[^']+')*[^.']*)*)(?:\.|$)/g;
var str = '\'1.2\':\'xyz@mail.com\'.8:\'2.3\'.25:\'he.llo\'.6:6\'1.2\''
document.writeln("<pre>" + str.replace(re, "$1\n") + "</pre>");
&#13;
答案 2 :(得分:0)
试试这个正则表达式:
new RegExp('(\.[^\:]+\:\'?[^\.]+\'?)','g');