正则表达式:捕获字符序列之前的所有内容,如果该字符序列不存在,则捕获整个文本
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+table
或 stats
,或字符串结尾。
目标:
捕获字符序列之前的所有内容,如果这些字符序列不存在,则捕获整个文本。
字符序列:
| 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+table
或stats
,或字符串结尾。