什么是正则表达式以匹配两个单词之间的空格(小写和大写)

时间:2018-03-15 01:35:06

标签: javascript regex google-sheets

我在Google工作表中有一个数据集,其中“name”字段如下所示:

Stephen & Sally Fitzpatrick

我试图找出正则表达式来找到“Sally Fitzpatrick”之间的空格,这样我就可以把它分成名字和姓氏。斯蒂芬&莎莉留在名字领域,菲茨帕特里克成为姓氏。

但问题的范围只是找到那个空间,而不是分裂它。

我相信它是一个相当新的编译器,因此支持\ s,\ b,\ w。

2 个答案:

答案 0 :(得分:1)

您可能正在寻找的内容类似于/(\S+\s\&\s\S+)(\s)(\S+)/

打破这个局面:

  • 抓住第一个字符串,空格,&符号和空格以及第二个字符串,并将所有这些组合为第一个字符串
  • 抓住SallyFitzpatrick之间的空格,并将其视为一个群组
  • 单独抓住第三个字符串,并将其视为一个组

这可以在以下内容中看到:



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]

&#13;
&#13;
const [first, last] = 'Stephen & Sally Fitzpatrick'.split(/(?<=[A-Za-z]) (?=[A-Za-z])/);

console.log(`first: ${first}, last: ${last}`);
&#13;
&#13;
&#13;

检查lookbehind proposal