c# - 正则表达式 - 在两者之间捕获未知数量的单词

标签 c# regex

我有以下字符串

  • 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 ,你可以将其捕获为 [^ ]+ (除了空格之外的任何内容),然后可以使用 .*

Demo

让我知道这对其他字符串是否适用。

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

相关文章:

c# - 从元组列表到对象列表的选择 C#

c# - 优化double for循环以提高执行速度

javascript - 正则表达式在 JavaScript 中无法按预期工作

python - Python 的正则表达式模式

java - Java中如何使用正则表达式解析HTML?

javascript - 正则表达式替换失败

c# - Web Api 已经定义了一个名为 'Get' 的成员,具有相同的参数类型

c# - 在 ASP.NET 中异步填充数据集或数据表的最佳做法是什么?

c# - 在 Application Insights 中查看 POST 请求正文

java - 我的正则表达式有什么问题 -?\\d{2}\\.?\\d{6}