首页 > 解决方案 > C# 正则表达式由多个右括号集分割

问题描述

这是来源:

( ( ERDAT > '20210224' ) OR ( ERDAT = '20210224' AND ERFZEIT > '085956' ) OR ( AEDAT > '20210224' ) OR ( AEDAT = '20210224' AND AEZEIT > '231217' ) ) AND ( AUART IN ( 'PM01', 'PM02', 'PM03', 'PM10', 'PM99' ) )

使用这个正则表达式:(?<=\))\s

我明白了:

( ( ERDAT > '20210224' )
OR ( ERDAT = '20210224' AND ERFZEIT > '085956' )
OR ( AEDAT > '20210224' )
OR ( AEDAT = '20210224' AND AEZEIT > '231217' )
)
AND ( AUART IN ( 'PM01', 'PM02', 'PM03', 'PM10', 'PM99' )
)

注意它们自己的行上的单个右括号。我想要的是这样的:

( ( ERDAT > '20210224' )
OR ( ERDAT = '20210224' AND ERFZEIT > '085956' )
OR ( AEDAT > '20210224' )
OR ( AEDAT = '20210224' AND AEZEIT > '231217' ) )
AND ( AUART IN ( 'PM01', 'PM02', 'PM03', 'PM10', 'PM99' ) )

2:还有一个安可: - 如果生成的分割行超过 50 个字符,我想在 50 个字符之前的最后一个逗号 (,) 处分割这些行

标签: c#regex

解决方案


您可以添加一个否定的前瞻断言来排除后跟另一个右括号的空格被替换:(?<=\))\s(?!\))


推荐阅读