我有以下字符串
- 2011 的里雅斯特 MED 清洁/原油/原油
- 2013 年的里雅斯特 fo/crude/crude
- 2013宁波东太平洋cca/cf/ce
- 2014 Agioi theodoroi MED cde/fo/ce
我实际上想做的是尝试将 Trieste MED(第一串)、Trieste(第二串)、Ningbo east pacific(第三串)和 agioi theodoroi med(第四串)作为一组称为开放端口。通常在日期 2013 e.g 和 crude/crude/crude 之间有 1 到 4 个词。
这是我到目前为止尝试过的https://regex101.com/r/mYevqd/1 .
但这很容易出错,因为我只假设开放端口组的单词最多被一个或两个空格分隔,这是错误的。如果我尝试放置\s* 那么 clean 的第一个字母将被捕获这是错误的。还有更好的吗?
最佳答案
你可以用这个简化你的正则表达式,
^(?<YearBuilt>\d{4})\s+(?<OpenPort>.*)\s+(?<LastCargos>[^ ]+)$
由于您在字符串中的第一件事是一年,因此使用 \d{4}
并且您要分组的最后一件事是这样的 clean/crude/crude
,你可以将其捕获为 [^ ]+
(除了空格之外的任何内容),然后可以使用 .*
让我知道这对其他字符串是否适用。
关于c# - 正则表达式 - 在两者之间捕获未知数量的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54055137/