我在Google工作表中有一个数据集,其中“name”字段如下所示:
Stephen & Sally Fitzpatrick
我试图找出正则表达式来找到“Sally Fitzpatrick”之间的空格,这样我就可以把它分成名字和姓氏。斯蒂芬&莎莉留在名字领域,菲茨帕特里克成为姓氏。
但问题的范围只是找到那个空间,而不是分裂它。
我相信它是一个相当新的编译器,因此支持\ s,\ b,\ w。
答案 0 :(得分:1)
您可能正在寻找的内容类似于/(\S+\s\&\s\S+)(\s)(\S+)/
。
打破这个局面:
Sally
和Fitzpatrick
之间的空格,并将其视为一个群组这可以在以下内容中看到:
let string = 'Stephen & Sally Fitzpatrick';
console.log(string.split(/(\S+\s\&\s\S+)(\s)(\S+)/).filter(Boolean));

请注意,这将匹配所有三个组件;您可以通过在括号内添加?:
来排除您不想要的内容。对第一组和第三组执行此操作将仅产生相关空间:
let string = 'Stephen & Sally Fitzpatrick';
console.log(string.split(/(?:\S+\s\&\s\S+)(\s)(?:\S+)/).filter(Boolean));

答案 1 :(得分:1)
使用外观的一种可能的解决方案:
/(?<=[A-Za-z])\s(?=[A-Za-z])/.exec('Stephen & Sally Fitzpatrick')
// -> [" ", index: 15, input: "Stephen & Sally Fitzpatrick", groups: undefined]
const [first, last] = 'Stephen & Sally Fitzpatrick'.split(/(?<=[A-Za-z]) (?=[A-Za-z])/);
console.log(`first: ${first}, last: ${last}`);
&#13;