我在InDesign中工作,格式化大量的文本。这是一个文本的样本。
新的!办公室业务证书(3部分) 办公室业务 经理的网络安全 在工作场所拥抱可持续性 3D打印简介 制造者技术简介:新的车间类
我需要能够匹配包含字符串"(3部分)“的一行后面的三行。
我的想法是尝试一个积极的背景,像这样:
(?<=\(3 parts\)$)^.*$但它和任何东西都不匹配。
发布于 2016-01-31 23:02:05
查找部分是正确的,但符号^ (开始段)和$ (结束段)的使用仅限于匹配位置--仅- not实际的“硬返回”字符。这就是表达式失败的原因:默认情况下,.“匹配所有”字符不匹配返回。因此,这使得第一个测试(?<=\(3 parts\)$)^.失败:根据这个默认规则,查找后面的$和^都不消耗返回,下面的.也不匹配它。
这是可能的,把GREP到单线模式-一个有趣的描述,可能会让你在错误的脚。从GREP的角度来看,它还允许.匹配返回;因此,整个运行的文本,硬返回和所有,都可以被认为是“单行(长)行”。它的代码是(?s),通常放在表达式的最前面。
这本身并不足以让它发挥作用,因为
(?s)(?<=\(3 parts\)$)^.仍然期望在$和^之间返回(否则任何一个都是错误的!)无论如何,这不是一个很好的方式来匹配一定数量的段落。调整表达式
(?s)(?<=\(3 parts\)$).^.*正确的工作在消费硬回报,但选择所有的东西,直到最后。
我提出了一种简单得多的方法:如果您想获得一定数量的硬回报,只需立即将它们包含在表达式中--它们的GREP代码是\r。
这导致了以下情况:
(?<=\(3 parts\)\r)(.*\r){3}在这里,查找是您已经得到的,再加上返回到该特定行的末尾(因为您也不想获取该返回),然后是三次重复的序列以获取整个行,.*\r。
发布于 2016-01-28 18:06:10
发布于 2016-01-28 18:09:03
您可以在-A中使用grep选项
grep -A 3 -F '(3 parts)' file
NEW! Certificate in Office Operations (3 parts)
Office Operations
Cyber Security for Managers
Embracing Sustainability in the Workplacehttps://stackoverflow.com/questions/35068678
复制相似问题