本文介绍了在记事本++中提取多行数据中2个特定单词之间的字符串/数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
全部,
我一直在尝试使用RegEx Search and Replace在Notepad++中提取两个特定单词之间的文本,但没有成功
它给了我找到的最后一个匹配项,我尝试搜索Stack Overflow,然后回答了几个问题,但没有成功,我的数据是
Open options for my word1
My Text1
My Text1 Second Line
My Text1 Third Line
Word2 My Fixed Text Word3
Open options for my word1
My Text2
My Text2 Second Line
My Text2 Third Line
Word2 My Fixed Text Word3
Open options for my word1
My Text3
My Text3 Second Line
My Text3 Third Line
Word2 My Fixed Text Word3
Open options for my word1
My Text4
My Text4 Second Line
My Text4 Third Line
Word2 My Fixed Text Word3
Open options for my word1
My Text5
My Text5 Second Line
My Text5 Third Line
Word2 My Fixed Text Word3
Open options for my word1
My Text6
My Text6 Second Line
My Text6 Third Line
Word2 My Fixed Text Word3
Open options for my word1
My Text7
My Text7 Second Line
My Text7 Third Line
Word2 My Fixed Text Word3
我的正则表达式是.*word1(.*?)Word2.*
,我正在用$1替换它
它为我提供了正则表达式匹配的最后一次出现的文本,是否有人可以查看它并告诉我这里遗漏了什么。
推荐答案
您需要使捕获组内部的.
匹配任何字符,包括换行符:
.*word1((?s:.*?))Word2.*
^^^^^^^^
打开DOTALL标志的(?s:...)
修饰符组将使.
匹配包括换行符在内的任何字符。.
匹配的换行符必须为OFF(请参见下面的屏幕截图)。要使模式在不考虑.
matches newline选项的情况下工作,请在模式内使用每个.
修饰符组:(?-s:.*)word1((?s:.*?))Word2(?-s:.*)
(其中(?-s:...)
在修饰符组内转换DOTALL行为)。相当于(?s:.*?)
模式的是[sS]*?
([wW]*?
,[dD]*?
),但是使用修饰符似乎是解决此问题的更自然的方法。
模式详情:
.*
-除换行符之外的任何字符,尽可能多,直到最后一个word1
-word1
行((?s:.*?))
-组1匹配任意0+个字符,直到第一个字符尽可能少.Word2
-Word2
子串和.*
--行的睡觉
这篇关于在记事本++中提取多行数据中2个特定单词之间的字符串/数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!