RegExp - 使用左侧空格查找最后一个匹配项

时间:2018-02-26 13:32:41

标签: regex

我想从提供的字符串中获取最后一个匹配项。目前,它是: 2 + 5 + 8e+d。它应该从三个中选择第二个+

RegExp为[(\+\s)](?=[^(\+\s)]*$),它会选择第三个+

我知道这个问题非常简单,但是,没有,这些都有效:

  1. [(\+\s)](?=[^(\+\s)]*$)
  2. [(\+\s)](?=[^(\+)]*$)
  3. [+](?=[^(+\s)]*$)
  4. 原始的RegExp如下:[-+*/](?=[^-+*/]*$),它选择了最后一个+-/*。基本上,我想转换它,以便选择" +", " -", " *", " /"

    最后并且左侧有一个空格(一个)。

    您可以在此处测试:https://regexr.com/3lc1a

2 个答案:

答案 0 :(得分:3)

您可以使用

/\s[-+\/*](?!.*\s[-+\/*])/

请参阅regex demo

<强>详情

  • \s - 空白
  • [-+\/*] - -+/*
  • (?!.*\s[-+\/*]) - 如果除了{0}以外的任何0+字符之后有-+/*,则表示匹配失败。在当前位置的右边立即换行符号。

如果输入中有多行,请将.*替换为[^]*[\s\S]*

答案 1 :(得分:1)

您可以使用

^.*\K [\/*+-]

The Demo