我正在try 从一个EDI文件中获取一些文本,使用Regex.我收到以下字符串/文本:

UNA:+.? '
UNB+UNOC:3+5790000120420:14+5790000181872:14+991111:1850+KuvertNr1234'
UNH+BrevNr5678+CONTRL:D:93A:ZZ:C0230Q+CTL02'
UCI+MEDREF01095+5790000181872:14+5790000120420:14+4'
UCM+1111MAN01095+MEDREF:D:93A:UN:H0130R+4'
FTX+VER+P00++EDI-brev med nummeret 1111MAN01095, afsendt 11/11 1999 kl 18.46 har \:ikke kunnet modtages. Horsens Sygehus, laboratoriet kan ikke modtage \:sygehushenvisninger. :Med venlig hilsen: IT-Hotline. Horsens Sygehus.Telefon 12345678.'UNT+5+BrevNr5678'UNZ+1+KuvertNr1234'

我需要FTX的短信.我得到了这个正则表达式:FTX\+([a-zA-Z]{2,4})\+([a-zA-Z0-9]{3})\+\+(.*?)'

但在EDIFACT中,?转义",如果我加上呢?到正文

UNA:+.? '
UNB+UNOC:3+5790000120420:14+5790000181872:14+991111:1850+KuvertNr1234'
UNH+BrevNr5678+CONTRL:D:93A:ZZ:C0230Q+CTL02'
UCI+MEDREF01095+5790000181872:14+5790000120420:14+4'
UCM+1111MAN01095+MEDREF:D:93A:UN:H0130R+4'
FTX+VER+P00++EDI-brev med nummeret 1111MAN01095, afsendt 11/11 1999 kl 18.46 har \:ikke kunnet modtages. Horsens Sygehus, laboratoriet kan ikke modtage \:sygehushenvisninger. :Med venlig hilsen: IT-Hotline.?' Horsens Sygehus.Telefon 12345678.'UNT+5+BrevNr5678'UNZ+1+KuvertNr1234'

我的正则表达式在‘char’之后停了下来?我如何使用.*?但忽略"?"在短信里吗? EDIFACT可以与\n一起使用,也可以作为不带\n的长字符串使用

试用次数:FTX\+([a-zA-Z]{2,4})\+([a-zA-Z0-9]{3})\+\+(.*?)'

推荐答案

您可以使用

FTX\+([a-zA-Z]{2,4})\+([a-zA-Z0-9]{3})\+\+(.*?)'(?<!\?')

请看regex demo.

Details:

  • FTX\+-FTX+字符串
  • ([a-zA-Z]{2,4})-组1:2到4个ASCII字母数字字符
  • \+-A +字符
  • ([a-zA-Z0-9]{3})-组2:三个ASCII字母数字字符
  • \+\+-++字符串
  • (.*?)-组3:除换行符以外的任何零个或多个字符,尽可能少
  • '(?<!\?')-前面没有?个字符的'个字符.

Csharp相关问答推荐

旋转时,在另一个对象内按比例zoom 对象

如何定义所有项目的解决方案版本?

System.Data.SQLite:判断SQLite数据库是否为空(任何表中至少有一行)

向类注入一个工厂来创建一些资源是一个好的实践吗?

如何使用while循环实现异常处理

System.Text.Json数据化的C#类映射

Blazor. NET 8—阶段启动配置文件不启动网站VS2022

.NET 6控制台应用程序,RabbitMQ消费不工作时,它的程序文件中的S

C#XmlSerializer-输出控制新行的多个XML片段

如何将MongoDB序列化程序设置为内部对象属性

如何在ASP.NET Core8中启用REST应用程序的序列化?

UWP应用程序try 将打包的本机.exe文件加载为C#程序集

调用Task.Run()与DoSomethingAsync()有什么不同?

.NET 6:如何防止系统生成的日志(log)?

无法使用[FromForm]发送带有图像和JSON的多部分请求

MudBlazor Textfield已禁用,但其验证工作正常

System.NotSupportdException:流不支持读取

如何使用.NET Aspire从Blazor应用程序与GRPC API通信?

RCL在毛伊岛应用程序和Blazor服务器应用程序.Net 8.0中使用页面

为什么我在使用有效令牌的情况下仍未获授权?