【问题标题】:Regular Expression to exclude CRLF from a line in string正则表达式从字符串中的一行中排除 CRLF
【发布时间】:2014-01-23 02:15:13
【问题描述】:

我有这个正则表达式,它可以提取数据并放入三个不同的组:开始、客户编号和结束。

^(?<begin>(.*?[|]){14})(?<CustomerNo>.*?)(?<end>[|].*)*$

这是可行的,只是“end”组的末尾将包含 CrLf 字符。有没有办法不使用上面的正则表达式在每行末尾包含 CrLf 字符?

【问题讨论】:

  • 你使用任何修饰符吗?你使用什么语言?重复一个捕获组有点奇怪。
  • 我用的是c#;但是任务不是使用 c# 来删除任何 CrLf。我的工作,我可以修改代码以删除 CrLf,但由于审查和其他限制,有时需要部署到生产中。因此,使用正则表达式排除 CrLf 字符将是现在的快速解决方案。但是,我不知道如何排除它。
  • 是逐行处理的字符串(也就是说:你使用多行模式吗?)
  • RegexOptions 设置为多行。

标签: c# regex


【解决方案1】:

试试这个:

@"^(?<begin>(.*?[|]){14})(?<CustomerNo>.*?)(?<end>[|][^\r\n]*)"

【讨论】:

  • 这行得通,谢谢。我以前试过这个,但我犯了一个错误,而不是你所拥有的,我使用了:@"^(?(.*?[|]){14})(?.*?)(? [|]^[\r\n]*)"
  • @Andy:试一试:@"^(?&lt;begin&gt;(?&gt;[^|]*[|]){14})(?&lt;CustomerNo&gt;[^|]*)(?&lt;end&gt;[|][^\r\n]*)" 如果它有效,它将是一个更快的模式。
猜你喜欢
  • 2017-04-13
  • 1970-01-01
  • 2021-05-31
  • 2021-12-08
  • 1970-01-01
  • 2019-08-03
  • 1970-01-01
  • 2012-02-17
  • 1970-01-01
相关资源
最近更新 更多