正则表达式从组中排除字符

2 regex

我有回应:

MS1:111980613994
124 MS2:222980613994124

我有以下正则表达式:

MS\d:(\d(?:\r?\n?)){15}
Run Code Online (Sandbox Code Playgroud)

根据Regex的说法," (?:\r?\n?)"部分应该让它与组匹配,但是将它从捕获中排除(因此我从组中获得连续值).

问题是" MS1:xxx"它匹配[CR][LF]并包含在组中.它应该从捕获中排除......

请帮忙.

Lau*_*ves 5

所述(?:...)语法不意味着封闭图案将从包围捕获组中排除(?:...).这意味着由此形成的组(?:...)不会创建新的捕获组.换句话说,如果它们被捕获组包围,则捕获组捕获非捕获组匹配的字符.

如果你真的想忽略嵌入式\rs和\ns,你最好的选择是在第二步中将它们剥离出来.你没有说你正在使用什么语言,但是相当于这个(Python)的东西应该有效:

s = re.sub(r'[\r\n]', '', s)
Run Code Online (Sandbox Code Playgroud)