如何使用正则表达式获取特定字符后的所有字符,例如逗号(“,”)

时间:2010-10-30 13:37:45

标签: javascript regex

需要正则表达式从变量中获取,(不包括它)之后的所有字符。该变量可以包含例如

'SELECT___100E___7',24
'SELECT___100E___7',1
'SELECT___100E___7',286
'SELECT___100E___7',5147

注意:此变量中的,后面可以有任意长度的字符。

对正则表达式的解释对新手来说是一个额外的帮助:)

编辑:javascript答案也一样好

9 个答案:

答案 0 :(得分:102)

您不需要正则表达式来执行此操作。这是一个例子:

var str = "'SELECT___100E___7',24";
var afterComma = str.substr(str.indexOf(",") + 1); // Contains 24 //

答案 1 :(得分:32)

简短回答

或者:

  • ,[\s\S]*$,.*$以匹配第一个逗号后的所有内容(请参阅说明使用哪个逗号);或

  • [^,]*$匹配最后一个逗号之后的所有内容(可能是您想要的)。

您可以在JavaScript中使用/[^,]*/.exec(s)[0],其中 s 是原始字符串。如果您想使用多行模式并以这种方式查找所有匹配项,则可以使用s.match(/[^,]*/mg)来获取数组(如果变量中的多个已发布的示例行在不同的行上)。

解释

  • [\s\S]是一个匹配空白和非空白字符(即所有字符)的字符类。这与.的不同之处在于它与换行符匹配。
  • [^,]是一个否定的字符类,它匹配除逗号外的所有内容。
  • *表示上一项可以重复0次或更多次。
  • $是要求匹配结束位于字符串末尾的锚点(如果使用/ m多行标记,则为行尾)。

对于第一场比赛,第一个正则表达式会找到第一个逗号,,然后匹配所有字符,直到行[\s\S]*$的结尾,包括逗号。

第二个正则表达式在行尾之前匹配尽可能多的非逗号字符。因此,整个匹配将在最后一个逗号之后。

答案 2 :(得分:16)

[^,]*$

可能会这样做。 (匹配最后一个逗号后的所有内容)。

说明:[^,]匹配除,以外的所有字符。 *表示正则表达式匹配[^,]的任意重复次数。 $符号与该行的结尾匹配。

答案 3 :(得分:4)

.+,(.+)

说明:

.+,

将搜索逗号之前的所有内容,包括逗号。

(.+) 

将搜索逗号后面的所有内容,具体取决于你的正则表达式环境,

\1

是您需要的第一个括号捕获组的引用,在此示例中是逗号后的所有内容。

答案 4 :(得分:3)

这匹配任意长度的单词:

#include <iostream>

enum MyEnumWith2Items { Item1, Item2 };
enum MyEnumWith3Items { Item3, Item4, Item5 };

template <typename E>
struct myStruct
 {
   template <E I>
   int & item ()
    { static int value = 0; return value; }
 };

int main ()
 {
   myStruct<MyEnumWith2Items>  e2;
   myStruct<MyEnumWith3Items>  e3;

   e2.item<Item1>() = 1;
   e2.item<Item2>() = 2;

   e3.item<Item3>() = 3;
   e3.item<Item4>() = 4;
   e3.item<Item5>() = 5;

   std::cout << "e2: " << e2.item<Item1>() << ", " << e2.item<Item2>() 
      << std::endl;                              // print e2: 1, 2
   std::cout << "e3: " << e3.item<Item3>() << ", " << e3.item<Item4>() 
      << ", " << e3.item<Item5>() << std::endl;  // print e3: 3, 4, 5
 }

答案 5 :(得分:2)

您可以尝试以下操作:

new_string = your_string.split(',').pop().trim();

这是它的工作原理:

  • split(',')创建一个由your_string
  • 的不同部分组成的数组

(例如,如果字符串为"'SELECT___100E___7',24",则数组为["'SELECT___100E___7'", "24"])。

  • pop()获取数组的最后一个元素

(在示例中,它将是"24")。

这已经足够了,但是如果可能存在一些空格(不是OP的情况,而是一般情况下更多),我们可以:

  • trim()会删除字符串周围的空格(如果它是" 24 ",则会变为"24"

这是一个简单的解决方案,肯定比正则表达式更容易。

答案 6 :(得分:1)

另一个想法是myVar.split(',')[1];

对于简单的情况,不使用正则表达式是个好主意......

答案 7 :(得分:1)

也许你可以试试这个

var str = "'SELECT___100E___7',24";
    var res = str.split(',').pop();

答案 8 :(得分:0)

这应该有效

preg_match_all('@.*\,(.*)@', '{{your data}}', $arr, PREG_PATTERN_ORDER);

您可以在此处进行测试:http://www.spaweditor.com/scripts/regex/index.php

RegEx:.*\,(.*)

此处针对JavaScript的RegEx测试: http://www.regular-expressions.info/javascriptexample.html