我有以下字符串


2011的里雅斯特MED清洁/粗制/粗制
2013的里雅斯特
2013宁波东太平洋CCA / CF / CE
2014年Agioi theodoroi MED cde / fo / ce


我真正想做的是尝试将Trieste MED(第一字符串),Trieste(第二字符串),宁波东太平洋(第三字符串)和agioi theodoroi med(第四字符串)作为一个开放端口来捕获。通常在2013年日期之间有1到4个字,例如,粗/粗/粗。

到目前为止,这是我尝试过的。

但这容易出错,因为我只假设开放端口组的字由一个或两个最大空格分隔,这是错误的。如果我尝试放置\ s *,则将捕获第一个干净的字母,这是错误。有更好的东西吗?

最佳答案

您可以以此简化您的正则表达式,

^(?<YearBuilt>\d{4})\s+(?<OpenPort>.*)\s+(?<LastCargos>[^ ]+)$


由于字符串中的第一件事是一年,因此请使用\d{4},最后要分组的内容是这样的clean/crude/crude,您可以将其捕获为该[^ ]+(任何内容,但不能包含空格),然后输入中间文本可以使用Ningbo East Pacific捕获其样本为.*的样本

Demo

让我知道这对于其他字符串是否适合您。

关于c# - 正则表达式-介于两者之间的单词数量未知,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54055137/

10-10 20:10