我正在尝试编写正则表达式来捕获数据,但很难完成它。
来自数据:
Code:Name Another-code:Another name
我需要一个数组:
['Code:Name', 'Another-code:Another name']
问题是代码几乎可以是任何空间。
我知道怎么做而不使用正则表达式,但决定给他们一个机会。
更新:忘记提及元素数量可以从1到无穷大。所以数据:
Code:Name -> ['Code:Name']
Code:Name Code:Name Code:Name -> ['Code:Name', 'Code:Name', 'Code:Name']
也适合。
答案 0 :(得分:2)
根据空格分割输入,后跟一个或多个非空格字符和:
符号。
> "Code:Name Another-code:Another name".split(/\s(?=\S+?:)/)
[ 'Code:Name', 'Another-code:Another name' ]
OR
> "Code:Name Another-code:Another name".split(/\s(?=[^\s:]+:)/)
[ 'Code:Name', 'Another-code:Another name' ]
答案 1 :(得分:1)
怎么样:
^(\S+:.+?)\s(\S+:.+)$
Code:Name
位于第1组,Another-code:Another name
位于第2组。
\S+
表示一个或多个不是空格的字符。
答案 2 :(得分:0)
这是一种不使用正则表达式的方法:
var s = 'Code:Name Another-code:Another name';
if ((pos = s.indexOf(' '))>0)
console.log('[' + s.substr(0, pos) + '], [' + s.substr(pos+1) + ']');
//=> [Code:Name], [Another-code:Another name]