我一直面临挑战。我有一个具有以下模式的文本文件:
SOME RANDOM TITLE IN CAPS (nnnn)
text text text
more text
...
SOME OTHER RANDOM TITLE IN CAPS (nnnn)
可以确定的是,我要提取的是带有方括号和日期ex:(2015)的行; (20008) (nnnn)之后没有文字,有时是空格和CR LF,有时只是CR LF
我想删除其他所有内容,只保留TITLE LINE和方括号
我花的时间本可以手工完成(有100条线),但我喜欢挑战:)
我以为可以找到问题,但我被困住了。
我已经尝试过以下方法:
^.*\(\d\d\d\d\)(?s)(.*)(^.*\(\d\d\d\d\))
但是我没有得到想要的东西。我似乎无法停止(?s)(。*)一直到文本结尾,而不是在下一次出现时停止。
答案 0 :(得分:3)
我建议使用“搜索”>“标记”功能。使用\(\d{4}\)
之类的样式,然后选中“书签行”选项,然后单击“全部标记”。然后使用搜索>书签>删除未标记的行。这将删除所有与您的模式匹配的行。
注意::如果其他行中可能包含4位数字的括号,则可以在表达式的末尾添加$,以确保该模式仅与该行的末尾匹配。例如。 more text (1234) and other stuff
将与我上面给出的模式匹配,但是如果您使用模式\(\d{4}\)$
,它将不再匹配。
如果您想通过仅包含大写字母和空格的行,然后在括号内加4位数字的括号(行的结尾处)来更具体地使用样式,则可以使用类似这个:[A-Z ]+\(\d{4}\)$
样本输入:
SOME RANDOM TITLE IN CAPS (2008)
text text text
more text
...
SOME OTHER RANDOM TITLE IN CAPS (2010)
以下是标记线条的方法:
点击“全部标记”后,您将看到:
现在使用搜索>书签>删除未标记的行,您将获得以下信息:
答案 1 :(得分:0)
以下RegEx将两行用括号括起来,其中包含4个数字:
.*?\(\d{4}\)\s*
它从零开始或多次(不贪心)开始匹配任何内容,然后匹配一个后跟4个数字的开始括号。最终结束空白和换行。
答案 2 :(得分:0)