我必须从文本文件中提取标题。
基本上,我必须将HOST:
或MAIL:
之前的所有内容提取为Title
:
正则表达式:
(?:(?<title>.*))(MAIL:|HOST:)
示例文字:
TITLE MSG HOST:HOSTNAME MAIL:a@b.com
TITLE sqlChecks [21/02/2019-22:00]: MAIL:a@b.com HOST:HOSTNAME
答案 0 :(得分:1)
您可以使用
(?<title>.*?)(?:(?P<mail>MAIL:.*)|(?P<host>HOST:.*))
请参见regex demo
详细信息
(?<title>.*?)
-组“标题”:除换行符以外的任何0+个字符,并且尽可能少(?:(?P<mail>MAIL:.*)|(?P<host>HOST:.*))
-与以下任意一项匹配的非捕获组:
(?P<mail>MAIL:.*)
-组mail
:MAIL:
和该行的其余部分|
-或(?P<host>HOST:.*)
-组host
:HOST:
和该行的其余部分答案 1 :(得分:0)
尝试使用此RegExp:(?<=TITLE\s)(?<title>.*?)(?=\s+(HOST:|MAIL:))