Regex匹配一次动态名称

  • 本文关键字:一次 动态 Regex regex
  • 更新时间 :
  • 英文 :


我想从一个看起来像这样的字符串中匹配一次公司名称

我想要的:Distribution Services Management只一次

得到CATE-N LUNA SI-N STELE SRL

我在尝试什么Clientn+(.*?[ ]s)

这可能对你有帮助:

Clientn{2}.*s{5}(.*)

My Logic is:

  1. 所需字符串总是在客户端的下两行之后,即位于第三行。
  2. 在我们想要的字符串开始之前,有一些空格(我假设至少有5个)
  3. 在这5个空格之后,直到下一个换行符是我们期望的输出。

演示:https://regex101.com/r/GeGo3v/2

使用s也可以匹配换行符,并且在示例数据中,看起来在您想要匹配的部分之前有2个或更多空格。

在第1组中获得捕获CATE-N LUNA SI-N STELE SRL的原因是因为您在换行符之后开始匹配,而不匹配2个空格之后的部分。

你可以用

bClientn+.*[^Srn]{2}(S.*)

部分模式匹配

  • bClientn+
  • .*[^Srn]{2}匹配到字符串的末尾,并回溯到2个空白字符的最后一次出现(或使用n+.*?作为第一次出现),除了换行符
  • (S.*)Capture组1,匹配至少一个后跟可选字符的非空白字符(换行符
  • 除外)

Regex演示

try this:

(?<=  b).*(?=n CIF)

演示我解决这个问题的方法是在许多空格和下一行的CIF之间检查所需的单词。我认为(?<= b)的两个空格就足够了。

(?<= b)部分是检查至少两个空格和单词边界。(?=n CIF)部分是正向的前瞻性断言,检查它是否在下一行的CIF之前。

最新更新