【问题标题】:C# Regex split by multiple closing brackets sets [closed]C#正则表达式由多个右括号集分割[关闭]
【发布时间】:2021-02-26 09:22:37
【问题描述】:

这是来源:

( ( 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


    【解决方案1】:

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

    【讨论】:

    • 行得通,谢谢!我仍在掌握正则表达式。关于如何在每次 50 个字符之前在最后一个逗号 (,) 处拆分结果的任何想法,即使我必须单独处理拆分列表?
    • 完成!是的 - 有时该字符串超过 50 个字符,然后我需要将其拆分为逗号(不在带引号的字符串内),作为最终字符串数组的一部分。
    • 关于您的再来一次:您可能需要考虑将其作为一个单独的问题提出,因为它与原始的右括号问题没有任何关系。这样,遇到类似问题的其他人以及可能帮助您解决问题的人都有更好的机会找到它。但它也应该可以通过环视来实现。在评论中链接新问题,我会看看它......
    • 也许是这样,但我希望它在同一个正则表达式中是可能的。它根据此规则拆分正则表达式,但同时(在同一个正则表达式内)在 50 个字符之前的最后一个逗号处进一步拆分结果行。
    • 你的正则表达式只匹配空格,而不是中间的文本,你想进一步处理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多