正则表达式:捕获字符序列之前的所有内容,如果该字符序列不存在,则捕获整个文本

Regex: Capture everything up until a character sequence & if that character sequence doesn't exist, capture entire text

目标:
捕获字符序列之前的所有内容,如果这些字符序列不存在,则捕获整个文本。

字符序列: | table& |统计数据

例 1: search foo bar | table _time Action Direction returnssearch foo bar

例 2: search foo bar hello hi ciao 1234 returnssearch foo bar hello hi ciao 1234

示例 3:
search foo bar
bar foo
| table _time Action Direction
returns
search foo bar
bar foo


不满足 Ex 2 的当前解决方案:

(?(?s).+?(?=\Q| table\E|\Q| stats\E))


您可以使用 https://regex101.com/ 进行测试。
任何帮助将不胜感激!谢谢你。

您可以使用

(?s)^(?<var>.*?(?=\| (?:table|stats)|$))

参见regex demo

详情:

  • (?s) - singleline/dotall 修改器
  • ^ - 字符串开头
  • (?<var>.*?(?=\| (?:table|stats)|$)) - 组“var”:
    • .*? - 零个或多个字符,尽可能少,直到出现最左边的
    • (?=\| (?:table|stats)|$) - |+space+tablestats,或字符串结尾。