【问题标题】:How to get the mid string between two strings in multiline text?如何获取多行文本中两个字符串之间的中间字符串?
【发布时间】:2021-07-14 05:11:56
【问题描述】:

我想得到SHIP TO:Account:之间的中间字符串

示例输入

SHIP TO: Abc Supply, Inc
123 S. Ramesh
Centralia IL 12345
Account: 234

预期输出

Abc Supply, Inc
123 S. Ramesh
Centralia IL 12345

【问题讨论】:

  • 请向我们展示一些预期的输出,以更好地了解您真正想要什么。还有,你自己有没有努力过?
  • 欢迎来到 Stack Overflow!请收下tour 并查看How to Ask 文章以熟悉规则。
  • 预期输出:Abc Supply, Inc 123 S. Ramesh Centralia IL 12345
  • 在询问之前进行研究!搜索 SO 给出many answers。您将看到,正则表达式问题提供 语言标签 是多么重要,因为正则表达式语法因它们而异。

标签: regex


【解决方案1】:

这个问题已经被问及回答: Regex match everything between two string, spaning multiline

使用带有多行标志的正则表达式SHIP TO:(.*)Account:

  • SHIP TO: 开始匹配。如果输入中没有给出,它将不匹配!
  • (.*) 是第一个 capture-group(括号内)匹配所有 .* ... 直到
  • Account: 结束匹配。因此,如果没有 Account: 存在,则它不会匹配!
  • multiline 标志/模式(通常是(?m))可以由您使用的正则表达式引擎/编程语言提供

测试用例

它确实符合您给定的示例:

SHIP TO: Abc Supply, Inc
123 S. Ramesh
Centralia IL 12345
Account: 234

并将预期输出提取为组#1:

 Abc Supply, Inc
123 S. Ramesh
Centralia IL 12345

SHIP TO: 之后的任何字符(空格)和Account: 之前的任何字符(换行符)

RegexPlanet上查看演示

【讨论】:

  • 您需要单行标志(AKA,DotAll),而不是多行标志(即s,而不是m)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-28
  • 1970-01-01
  • 1970-01-01
  • 2012-09-17
  • 1970-01-01
相关资源
最近更新 更多