如何分割正则表达式空间和标点匹配,但保留结果数组中的标点符号

How to split regex space and punctuation matches, but keep the punctuation in the resulting array?

本文关键字:保留 结果 数组 标点符号 分割 何分割 正则表达式 空间      更新时间:2023-09-26

我想用匹配空格、逗号、问号和感叹号的正则表达式拆分字符串。但是我想在结果数组中包含匹配的标点符号(空格应该被丢弃)。例如:

正则表达式激怒了我,我不能接受它!

上面的字符串应该分割()为:

["正则表达式"、"刺激"、"我"、",","我"、"不能"、"花","它","!"]

我现在简单地用空格和逗号开始;我有以下代码:

inputStr.split(/'s|(,)/);

不幸的是,它给了我未定义的项-我做错了。我像往常一样花了几个小时搜索,但一无所获。我读过"向前看",但也不明白。有什么正则表达式大师能帮帮我吗?

尝试使用String.prototype.match()RegExp /('w+''w+)|'w+|,|'!/g

  • ('w+''w+)匹配'w+''w+并记住匹配。这些被称为捕获组。'w+''w+匹配基本拉丁字母中的任何字母数字字符,包括下划线。相当于[A-Za-z0-9_],后面跟着匹配撇号,后面跟着匹配字母数字字符。+匹配前一项'w 1次以上。相当于{1,}。
  • 'w+匹配基本拉丁字母中的任何字母数字字符,包括下划线。
  • ,匹配逗号
  • '!匹配感叹号

参见RegExp

var str = "Regex irritates me, I can't take it!";
var res = str.match(/('w+''w+)|'w+|,|'!/g);
console.log(res)

应该可以了

String pat="Regex激怒了我,我不能接受它!"

pat.split (' s);

正则表达式字符串((' w ' !) *) ' S

解释:

  • ()捕获组。
  • the ['w'!]*捕获任何单词字符、撇号或感叹号
  • 'S将不捕获空间。

试试regexpal.com