如果我有以下示例:
var directoryDialog = new CommonOpenFileDialog
{
IsFolderPicker = true,
Title = "Select Folder"
};
如何选择文字
X-FileName: pallen (Non-Privileged).pst
Here is our forecast
Message-ID: <15464986.1075855378456.JavaMail.evans@thyme>
在“X-FileName .... \ n”之后直到“Message-ID”被执行?
我读到了关于前瞻和后方并尝试了这一点但没有奏效:
Here is our forecast
答案 0 :(得分:0)
这应该这样做:
(?:X-FileName:[^\n]+)\n+([^\n]+)\n+(?:Message-ID:)
(组#1是匹配)
说明:
(?:X-FileName:[^\n]+)
匹配X-Filename:
后跟任意数量的非换行符,而不捕获它(?:
)。
\n+
匹配任意数量的连续换行符。
([^\n]+)
匹配并捕获任何不是换行符的连续字符。
\n+
再次匹配任意数量的连续换行符。
(?:Message-ID:)
匹配Message-ID:
而未捕获它(?:
)。
修改:正如@WiktorStribiżew所提到的那样,将文本拆分成行可能是一种更简单/更清晰的方式来检索您想要的内容。
答案 1 :(得分:0)
这里有两种方法,它们取决于更广泛的背景。如果您的预期子字符串是第二段,则只需使用\n\n
(或\r\n\r\n
)进行拆分,然后从结果列表中获取第二项。
如果是某个较大文本中的文本,请使用正则表达式。
参见Python演示:
import re
s='''X-FileName: pallen (Non-Privileged).pst
Here is our forecast
Message-ID: <15464986.1075855378456.JavaMail.evans@thyme>'''
# Non-regex way for the string in the exact same format
print(s.split('\n\n')[1])
# Regex way to get some substring in a known context
m = re.search(r'X-FileName:.*[\r\n]+(.+)', s)
if m:
print(m.group(1))
正则表达式意味着:
X-FileName:
- 文字子字符串.*
- 除了换行符之外的任何0 +字符[\r\n]+
- 一个或多个CR或LF字符(.+)
- 第1组:除了换行符之外的一个或多个字符,尽可能多。请参阅regex demo。