我想将起始数字和字符串分开
01.text
2 - something
3 more
获得
array (
[0] => 01.text
[1] => 01
[2] text
)
array (
[0] => 2 - something
[1] => 2
[2] something
)
array (
[0] => 3 more
[1] => 3
[2] more
)
我尝试了
的正则表达式^(\d+)\.+|\s+|-+(.*?)
但不能按预期工作。
我的问题是如何匹配.
或-
,数字后是否有空格。
答案 0 :(得分:1)
您的正则表达式使用的替换将与捕获组中的一个或多个数字相匹配,后跟一个点或空格字符,或者与该组中的|
匹配的任何字符为零或多次非贪婪。
您可以将正则表达式更新为不使用替换|
,并使第二组中的量词为贪婪。
在第一组中捕获一个或多个数字,然后在字符类中匹配您的字符,然后在另一个捕获组中匹配任何字符一次或多次:
答案 1 :(得分:1)
最好为要拆分的字符串提供模式。我知道有时候是不可能的。因此,此正则表达式可与所有情况匹配,并为您提供所需的数组
/^(\d+)[\.\-\s]*(.*)?$/
let rows = [
"01.text",
"2 - something",
"3 more"
];
let regex = /^(\d+)[\.\-\s]*(.*)?$/;
for(let row of rows) {
console.log(regex.exec(row))
}
无论如何,如果您知道文件中有更多分隔符,请添加到[\。\-\ s] *