正则表达式 - 匹配第二个逗号(或逗号和空格)之后的所有内容

Posted

技术标签:

【中文标题】正则表达式 - 匹配第二个逗号(或逗号和空格)之后的所有内容【英文标题】:Regex - Match everything after second comma (or comma and space) 【发布时间】:2022-01-05 17:28:09 【问题描述】:

我查看了这个链接:Regex - Match everything after second occurence。我似乎无法用 http:// 代替逗号,更不用说逗号和空格了。这是我正在使用的字符串示例:

42:A:b41a2431,B:7615239a,我们,是(冠军12)

我希望在第二个 ", "... 之后提取 anything

所以,那就是:

我们,是(冠军12。)

(如果有帮助,我将在 Python 中执行此操作。)

【问题讨论】:

【参考方案1】:

使用 re 的完整代码示例

    [^,]+所有不带逗号的符号 , 逗号符号 [^,]+所有不带逗号的符号 , 逗号符号 \s* 0 个或多个空格 (.+) 有用的数据
import re
data="42: A: b41a2431, B: 7615239a, we, are(the champion 12 .)"
re.findall(r'[^,]+,[^,]+,\s*(.+)',data)

输出

['we, are(the champion 12 .)']

【讨论】:

【参考方案2】:

你不能只使用 split() 和 join() 吗?

string = "42: A: b41a2431, B: 7615239a, we, are(the champion 12 .)"
result = ", ".join(string.split(", ")[2:])
print(result)

输出:

'we, are(the champion 12 .)'

【讨论】:

【参考方案3】:

正则表达式对您不起作用,因为情况有点不同 该正则表达式假定字符串 starts 以 http(s):// 如果所有测试字符串都有 2 个逗号,那么正则表达式非常简单.*?,.*?,(.+) *?表示惰性(与贪婪)量词,因此它不会吃下一个逗号(因为它适合“任何字符”.

你可以在这里看到演示https://regex101.com/r/XjLOVz/1

【讨论】:

以上是关于正则表达式 - 匹配第二个逗号(或逗号和空格)之后的所有内容的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式匹配逗号不在分组符号之间

什么正则表达式将匹配除逗号','或分号';'之外的每个字符?

删除重复的单词、逗号和空格

正则表达式匹配两个或多个逗号分隔的整数

正则表达式匹配逗号或换行符,但不能同时匹配两者

JS中的正则表达式匹配