将正则表达式匹配到下一个特殊字符,同时允许空格

萨米斯

我正在使用Javascript使用正则表达式提取字符串的一部分。

我有一个像这样的字符串:

lorem ipsum !bang #hash #hash2 ^caret word @at sym

我正在尝试以各种字符开头的单词-有时它们中可以有空格,每种类型可以有多个。所以我想将此字符串转换为一组值,例如:

text: "lorem ipsum"
!: "bang"
#: ["hash", "hash2"]
^: "caret word"
@: "at sym"

我当前的正则表达式是/ ([!#^@>\/*-]\w+)/gm这种类型的作品,但它不匹配的空间-所以从样品上方仅能生产caret^,而不是整个caret word

我要做的代码是:

var result = {};

var re = / ([!#^@>\/*-]\w+)/gm;
var m;

var firstSpecialCharIndex = inputString.search(/ [!#^@>\/*-]/);
result["text"] = inputString.substring(0, firstSpecialCharIndex);

while ((m = re.exec(inputString)) !== null) {
  if (m.index === re.lastIndex) {
    re.lastIndex++;
  }

  var index = m[1].substring(0,1);
  if(result[index] == null)
    result[index] = [];
  result[index].push(m[1].substring(1));
}

有谁知道我如何匹配下一个特殊字符,包括多个单词之间的空格(但不匹配下一个特殊字符后的空格)?非常感谢

摇滚321987

text为简单起见删除了一部分。您可以使用先行

([!#^@>\/*-])(.*?)(?=\s[!#^@>\/*-]|$)

正则表达式演示

第1组包含符号,第2组包含文本,您可以根据需要调整结果。

JS演示

var inputString = "lorem ipsum !bang #hash #hash2 ^caret word @at sym";

var result = {};

var re = /([!#^@>\/*-])(.*?)(?=\s[!#^@>\/*-]|$)/gm;
var m;

var firstSpecialCharIndex = inputString.search(/ [!#^@>\/*-]/);
result["text"] = inputString.substring(0, firstSpecialCharIndex);

while ((m = re.exec(inputString)) !== null) {
    var index = m[1];
    if(result[index] == null) {
        result[index] = [];
    }
    result[index].push(m[2].trim());
}
document.writeln("<pre>" + JSON.stringify(result) + "</pre>");

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将正则表达式匹配到下一个特殊字符,同时允许空格

来自分类Dev

正则表达式匹配与下一个存在空格或字符串的结尾

来自分类Dev

如何将正则表达式匹配到第一个空格

来自分类Dev

有没有办法扩展正则表达式的范围,以将字符包括到上一个/下一个空格中?

来自分类Dev

正则表达式匹配字符串中的任何字符,直到下一个匹配为止

来自分类Dev

正则表达式:将所有内容匹配到最后一个空格,而不包括它

来自分类Dev

正则表达式返回匹配项加上字符串直到下一个匹配项

来自分类Dev

正则表达式包含到下一个空格

来自分类Dev

正则表达式包括到下一个空格

来自分类Dev

将正则表达式从字符匹配到行尾,但忽略最后一个字符

来自分类Dev

正则表达式单词匹配并提取下一个单词

来自分类Dev

正则表达式只允许一个特殊字符?

来自分类Dev

正则表达式可匹配任何不包含特殊字符或空格但可以包含一个空格的字符串。或_,但不在开头或末尾

来自分类Dev

重复进行正则表达式匹配,然后继续进行下一个匹配

来自分类Dev

重复进行正则表达式匹配,然后继续进行下一个匹配

来自分类Dev

正则表达式将字符串与第n个特定字符串匹配到最后一个单词

来自分类Dev

正则表达式以匹配空格,后跟一个或多个字符

来自分类Dev

正则表达式匹配多个空格,直到一个字符

来自分类Dev

正则表达式匹配特殊字符的一个实例

来自分类Dev

正则表达式只能匹配字符或空格或两个单词之间的一个点,不允许双精度空格

来自分类Dev

正则表达式只能匹配字符或空格或两个单词之间的一个点,不允许双精度空格

来自分类Dev

如何使用正则表达式在单词组合之后和下一个空格之前查找包含单词和非单词字符的模式

来自分类Dev

正则表达式最多可匹配2个完整单词,而下一个包含该字符的单词

来自分类Dev

如何将正则表达式中的任何内容匹配到一个字符且不包括该字符?

来自分类Dev

正则表达式例外-如果数字是下一个符号,则不匹配所有内容

来自分类Dev

Cpp:为什么下一个正则表达式匹配不正确?

来自分类Dev

正则表达式 - 名称中只允许一个空格和一个连字符

来自分类Dev

正则表达式:将所有内容匹配到一个可选的捕获组

来自分类Dev

如何获得整个字符串,直到下一个正则表达式模式匹配?

Related 相关文章

  1. 1

    将正则表达式匹配到下一个特殊字符,同时允许空格

  2. 2

    正则表达式匹配与下一个存在空格或字符串的结尾

  3. 3

    如何将正则表达式匹配到第一个空格

  4. 4

    有没有办法扩展正则表达式的范围,以将字符包括到上一个/下一个空格中?

  5. 5

    正则表达式匹配字符串中的任何字符,直到下一个匹配为止

  6. 6

    正则表达式:将所有内容匹配到最后一个空格,而不包括它

  7. 7

    正则表达式返回匹配项加上字符串直到下一个匹配项

  8. 8

    正则表达式包含到下一个空格

  9. 9

    正则表达式包括到下一个空格

  10. 10

    将正则表达式从字符匹配到行尾,但忽略最后一个字符

  11. 11

    正则表达式单词匹配并提取下一个单词

  12. 12

    正则表达式只允许一个特殊字符?

  13. 13

    正则表达式可匹配任何不包含特殊字符或空格但可以包含一个空格的字符串。或_,但不在开头或末尾

  14. 14

    重复进行正则表达式匹配,然后继续进行下一个匹配

  15. 15

    重复进行正则表达式匹配,然后继续进行下一个匹配

  16. 16

    正则表达式将字符串与第n个特定字符串匹配到最后一个单词

  17. 17

    正则表达式以匹配空格,后跟一个或多个字符

  18. 18

    正则表达式匹配多个空格,直到一个字符

  19. 19

    正则表达式匹配特殊字符的一个实例

  20. 20

    正则表达式只能匹配字符或空格或两个单词之间的一个点,不允许双精度空格

  21. 21

    正则表达式只能匹配字符或空格或两个单词之间的一个点,不允许双精度空格

  22. 22

    如何使用正则表达式在单词组合之后和下一个空格之前查找包含单词和非单词字符的模式

  23. 23

    正则表达式最多可匹配2个完整单词,而下一个包含该字符的单词

  24. 24

    如何将正则表达式中的任何内容匹配到一个字符且不包括该字符?

  25. 25

    正则表达式例外-如果数字是下一个符号,则不匹配所有内容

  26. 26

    Cpp:为什么下一个正则表达式匹配不正确?

  27. 27

    正则表达式 - 名称中只允许一个空格和一个连字符

  28. 28

    正则表达式:将所有内容匹配到一个可选的捕获组

  29. 29

    如何获得整个字符串,直到下一个正则表达式模式匹配?

热门标签

归档