我想用正则表达式匹配空格,逗号,问号和感叹号来拆分字符串。但是我想在结果数组中包含匹配的标点符号(空格应该被丢弃。)例如:
正则表达式让我很恼火,我无法接受它!
上面的字符串应该split()到:
[" Regex","烦恼","我",",","我", "不能","采取","它","!"]
我现在只用空格和逗号开始轻松;我有以下代码:
inputStr.split(/\s|(,)/);
不幸的是,它给了我未定义的项目 - 我做错了。我花了几个小时研究(像往常一样)并且空洞。我读到了关于" lookahead"但也无法弄清楚。任何正则表达的大师能帮我一把吗?
答案 0 :(得分:3)
尝试将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)

答案 1 :(得分:0)
这应该有效
String pat ="正则表达式让我感到恼火,我无法接受它!"
pat.split(" \ S&#34);
答案 2 :(得分:0)
正则表达式字符串是([\ w'!,] *)\ S
说明:
在regexpal.com中试用