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

Posted

技术标签:

【中文标题】如何使用正则表达式获取特定字符之后的所有字符,例如逗号 (",")【英文标题】:How can I use regex to get all the characters after a specific character, e.g. comma (",") 【发布时间】:2011-05-02 19:35:15 【问题描述】:

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

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

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

对正则表达式的解释将是对新手的额外帮助:)

编辑:javascript 答案也一样好

【问题讨论】:

您使用哪种语言?如果您想要一个 Java 示例,例如 Perl 答案会让您感到困惑。 javascript/jQuery 抱歉忘了提。所以像这样 var result_val = $(this).attr('href').match(RegEX); 为什么你绝对需要正则表达式?这个解决方案可以通过基本的字符串操作轻松实现。 元评论:如果您从谷歌搜索来到这里,您正在寻找正则表达式的帮助,有点烦人找到很多答案说“你不需要正则表达式” +按照安德鲁所说的 【参考方案1】:

简答

要么:

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

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

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

说明

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

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

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

【讨论】:

您的第二个答案有效,但我决定使用非正则表达式解决方案。谢谢你的努力!!!【参考方案2】:

也许你可以试试这个

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

【讨论】:

【参考方案3】:

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

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

【讨论】:

【参考方案4】:

您可以尝试以下方法:

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

这就是它的工作原理:

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

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

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

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

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

trim() 将删除字符串周围的空格(如果是 " 24 ",它将变成简单的 "24"

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

【讨论】:

可能需要进行一点扩展。与正则表达式解决方案相比有哪些优缺点? 我没有发现任何缺点。我觉得这很容易,因为正则表达式通常是不可理解的【参考方案5】:

这匹配任意长度的单词:

var phrase = "an important number comes after this: 123456";
var word = "this: ";
var number = phrase.substr(phrase.indexOf(word) + word.length);
// number = 123456

【讨论】:

这件事绝对有帮助。谢谢:)【参考方案6】:

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

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

【讨论】:

实际上,不,我绝对不需要正则表达式答案。我已经更改了我的问题以更清楚地反映这一点,您的回答非常清楚并且有效。 获取任意长度单词后的文本:***.com/a/44617843/4732117【参考方案7】:

这应该可以工作

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

你可以在这里测试它:http://www.spaweditor.com/scripts/regex/index.php

正则表达式:.*\,(.*)

此处对 JavaScript 进行相同的 RegEx 测试: http://www.regular-expressions.info/javascriptexample.html

【讨论】:

对不起,是我的错误没有包括我想要的语言 你仍然可以使用相同的正则表达式【参考方案8】:
.+,(.+)

解释:

.+,

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

(.+) 

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

\1

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

【讨论】:

【参考方案9】:
[^,]*$

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

解释:[^,] 匹配除, 之外的所有字符。 * 表示正则表达式匹配任意数量的 [^,] 重复。 $ 符号与行尾匹配。

【讨论】:

这不匹配, 之后的所有内容,但除了, 之外的任何内容。如果没有,怎么办? 原始帖子中的示例表明一个逗号。并且没有定义没有逗号的行为,所以这应该没问题。

以上是关于如何使用正则表达式获取特定字符之后的所有字符,例如逗号 (",")的主要内容,如果未能解决你的问题,请参考以下文章

如何使用正则表达式匹配所有数字字符和一些单个字符

如何使用正则表达式查找具有特定起始字符串的所有匹配项? [复制]

正则如何匹配某字符之后的内容

Python 正则表达式。删除 ':' 之后的所有字符(包括行尾和特定字符串除外)

使用正则表达式仅获取某个字符(#)之后的数字[关闭]

如何使用正则表达式从熊猫数据框中的一行中的字符串中提取所有特定值?