繁体   English   中英

正则表达式匹配没有开始和结束空格的字符串中的单词

[英]Regex match the words from a string without the start and end space

我试图匹配字符串中的一些单词,但没有成功。

比方说,我有这个字符串:

"word , word , two words, word"

我想要做的是匹配单词,但没有开始或结束的空间。 但它应该接受单词之间的空格。 匹配产生的数组应该是:

["word","word","two words","word"]

有人可以帮助或给我一些见解,我将如何做到这一点?

谢谢

编辑:我尝试过并取得成功的是分两部分:

match(/[^(,)]+/g)

并使用map从结果数组中删除所有空格:

map(value => value.trim());

但是只想通过正则表达式来做,并且不知道该怎么做。

\w[\w ]*?(?:(?=\s*,)|$)

说明:

\w[\w ]*?

匹配中间有0个或更多空格的单词字符,但从不在开头。 (懒)

(?:(?=\s*,)|$)

这种非捕获组期待未来的空间之后, 字符串的结尾。

在这里试试吧。

您可以在逗号上拆分,并在两侧包含可选空格:

 var str = "word , , word , two words, word"; var arr = str.split(/(?:\\s*,\\s*)+/); console.log(arr); //=> ["word", "word", "two words", "word"] 

您可以应用以下正则表达式:

(\w+\s*\w+)

匹配

  • 一个或多个单词字符后跟
  • 0到N个白色字符(空格字符:空格,制表符,换行符,回车符,垂直制表符)后跟
  • 1个或多个单词字符。

http://www.rexegg.com/regex-quickstart.html

这可能是您正在寻找的捕获组,因此迭代\\ 1

\s*([\w\s]+)\s*

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM