【问题标题】:How to write regular expression to match first occurrence of ending word如何编写正则表达式以匹配第一次出现的结束词
【发布时间】:2023-03-06 02:36:01
【问题描述】:

我需要从下面的文本中删除以余额结转开头的行

结转余额 170,806.80 3,558.48 167,248.32 \r\n <some other text> \r\n

结果文本应该是

<some other text> \r\n

我尝试使用下面的正则表达式 Regex.Replace(body, _regex, "",RegexOptions.Singleline),但它匹配字符串末尾的 \r\n 并且正文为空白。

Balance carried forward.*[\r\n|\r|\n]

【问题讨论】:

  • 能不能不用Split Function有类似的SO发帖
  • 拆分对我来说不是一个选项,因为我的方法更通用。字符串会经过一堆正则表达式。
  • 您是否可以遍历字符串,直到找到第一个 \r\n 实例,并使用该索引执行适当的操作?不一定是您正在寻找的,但它可能是一种替代解决方案。

标签: c# regex


【解决方案1】:

试试这个模式:

^Balance carried forward[^\r\n]*(?:\r\n|\r|\n)

解释:

^ // match at the start of a line
Balance carried forward
[^\r\n]* // match anything that's not a newline
(?:\r\n|\r|\n) // finally, match a newline

【讨论】:

    【解决方案2】:

    我愿意:

    ^Balance carried forward.*?\R
    

    其中\R 代表\n\r\r\n 中的任何一个。

    如果无法识别\R,请使用:

    ^Balance carried forward.*?[\r\n]+
    

    【讨论】:

    • 由于某种原因,\R 在 C# 中未被识别
    猜你喜欢
    • 2016-03-18
    • 2022-08-13
    • 2012-04-18
    • 2018-06-28
    • 1970-01-01
    • 1970-01-01
    • 2015-04-10
    • 1970-01-01
    相关资源
    最近更新 更多