繁体   English   中英

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

[英]Regex Exclude Character From Group

我有一个回应:

MS1:111980613994
124 MS2:222980613994124

我有以下正则表达式:

MS\d:(\d(?:\r?\n?)){15}

根据Regex,“ (?:\\r?\\n?) ”部分应使其与组匹配,但应将其从捕获中排除(以便从组中获得连续的值)。

问题是对于“ MS1:xxx ”,它与[CR][LF]匹配并将其包括在组中。 它应该从捕获中排除...

请帮助。

(?:...)语法并不意味着将封闭的模式从包含(?:...)的捕获组中排除。 这意味着由(?:...)组成的组将不会创建新的捕获组。 换句话说,如果它们被捕获组包围,则捕获组捕获与非捕获组匹配的字符。

如果您真的想忽略嵌入式\\r\\n最好的选择是将它们删除。 您没有说出您使用的是哪种语言,但是等效的语言(Python)应该可以使用:

s = re.sub(r'[\r\n]', '', s)

据我所知,您将必须使用2个正则表达式。 一个是“ MS \\ d:(\\ d(?:\\ r?\\ n?)){15}”,另一个用于从比赛中删除换行符。

请参考“ 正则表达式以跳过捕获组中的字符 ”。

也许您的意思是将[CR] [LF]匹配部分放在捕获的组之外,例如: MS\\d:(\\d){15}(?:\\r?\\n?)

MS\\d:(?:(\\d)\\r?\\n?){15}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM