我试图从一篇长文中提取部分内容,比如有关照料植物的信息。案文包含段落和空白行。我无法捕捉到我想要的具体文本,第二个问题是,最后一个词没有显示在提取的文本中,最后一个问题是,当我的搜索从行的开头开始时。
我试着搜索想要提取的文本,方法是使用一个不在行首的单词,它起作用了,只是想要的文本的末尾少了一个单词,如果这个单词在新行上,它根本不会显示任何结果。我用匹配测试
//开始搜索的第一个单词是“如何”。我也想捕捉它//我想要结束的第二个单词是‘(可选的):’
'/(?=How to).*?\s(?=\(optional\):)/'我用来测试的示例文本是:
//文本出现在此之前。 浅谈切叶植物的护理 裂叶植物,也被称为monstera deliciosa或瑞士奶酪植物,是一种大型的、受欢迎的、易于照料的室内植物,并不是真正的植物家庭中的植物。人们对这种植物的名称有很大的混淆;这些年来,各种名称变得千变万化。 以下是更多信息(可选): //还有更多的文本在这里
我想从单词“如何”(可选)结束时提取所有的文本。不管中间有多少行或段落
预期提取的文本:
浅谈切叶植物的护理 裂叶植物,也被称为monstera deliciosa或瑞士奶酪植物,是一种大型的、受欢迎的、易于照料的室内植物,并不是真正的植物家庭中的植物。人们对这种植物的名称有很大的混淆;这些年来,各种名称变得千变万化。 以下是更多信息(可选):
谢谢
发布于 2019-09-11 06:19:13
发布于 2019-09-11 07:15:08
模式:^How to(?:.|\R)*optional\):$
解释:
^匹配How to出现在行首的第一个实例(?: )非捕获组。我们需要它,因为下面的OR指令是管道|。但我们不需要捕捉内容。这就是为什么我们在第一个括号之后使用?:的原因。.每个字符|或\R每一种新线*确保对组的每个实例捕获零optional\):$将单词optional与括号(转义,因为它不是指令) \)和文本$末尾的冒号:匹配。模式2:/^How to.*optional\):$/ms
这种模式甚至更简单,但需要设置m和s标志以匹配多行,而.字符类则需要匹配新行。
https://stackoverflow.com/questions/57882913
复制相似问题