我想从一个看起来像这样的字符串中匹配一次公司名称
我想要的:Distribution Services Management
只一次
得到CATE-N LUNA SI-N STELE SRL
我在尝试什么Clientn+(.*?[ ]s)
这可能对你有帮助:
Clientn{2}.*s{5}(.*)
My Logic is:
- 所需字符串总是在客户端的下两行之后,即位于第三行。
- 在我们想要的字符串开始之前,有一些空格(我假设至少有5个)
- 在这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之前。