从多场比赛中获取最后一场比赛
Getting last match from multiple matches
我正在尝试使用记事本++匹配并获取文件中最后一次出现的模式。
我的文字:
X12
Source =asdjkasjd
file="x/y1.dun"
"x/y2.dun"
"x/y3.dun"
asds12
X22
p/q/xy.dun
asda=23
source =asdf
X44
1000
1001
file="abc.dun"
我期望使用查找和替换是这样的:
X12 x/y3.dun
X22 p/q/xy.dun
X44 abc.dun
到目前为止我尝试过的:
(X\d{2}).*?([^"\s]+dun)((?!X\d{2}).)*
替换为:
\t\t\n
但它 returns 我这个:
X12 x/y1.dun //Which is the first match
X22 p/q/xy.dun
X44 abc.dun
如何在一场比赛中获得最后一场比赛?我正在寻找获得最后一场比赛的通用方法。
您可以匹配并捕获您需要保留的内容,只匹配您不需要的内容,并且仅在匹配到捕获组时才替换为文本:
查找内容:(?s)\b(X\d{2})(?:(?!X\d{2}).)*["\s]([^"\s]+\.dun)|(?:(?!X\d{2}).)*
替换为:(?{1}\t\t\n)
详情:
(?s)
- DOTALL 修饰符(您可以删除它并检查 .
匹配换行符 选项)
\b
- 在单词开头匹配 X
的前导单词边界
(X\d{2})
- 第 1 组捕获 X
(请注意,如果您不想匹配小写 [=,则必须打开 匹配大小写 18=]) 和任意两位数字
(?:(?!X\d{2}).)*
- 匹配任何字符的调节贪婪标记,零次或多次重复,后面不跟 X
和任何两位数字。由于它是贪心的,它会补足到下一个字符开始禁止序列的位置,并回溯到后续子模式所需的最后一个"dun"。
["\s]
- 空格或双引号
([^"\s]+\.dun)
- 第 2 组捕获除空格和双引号以外的一个或多个字符,然后是一个点和一个 dun
子字符串
|
- 或
(?:(?!X\d{2}).)*
- 与上面相同的贪婪标记。
更换详情:
(?{1}
- 如果第 1 组匹配....
\t\t\n
- 替换为第一组值、两个制表符、第二组值和换行符
)
- 否则替换为空字符串。
我正在尝试使用记事本++匹配并获取文件中最后一次出现的模式。
我的文字:
X12
Source =asdjkasjd
file="x/y1.dun"
"x/y2.dun"
"x/y3.dun"
asds12
X22
p/q/xy.dun
asda=23
source =asdf
X44
1000
1001
file="abc.dun"
我期望使用查找和替换是这样的:
X12 x/y3.dun
X22 p/q/xy.dun
X44 abc.dun
到目前为止我尝试过的:
(X\d{2}).*?([^"\s]+dun)((?!X\d{2}).)*
替换为:
\t\t\n
但它 returns 我这个:
X12 x/y1.dun //Which is the first match
X22 p/q/xy.dun
X44 abc.dun
如何在一场比赛中获得最后一场比赛?我正在寻找获得最后一场比赛的通用方法。
您可以匹配并捕获您需要保留的内容,只匹配您不需要的内容,并且仅在匹配到捕获组时才替换为文本:
查找内容:(?s)\b(X\d{2})(?:(?!X\d{2}).)*["\s]([^"\s]+\.dun)|(?:(?!X\d{2}).)*
替换为:(?{1}\t\t\n)
详情:
(?s)
- DOTALL 修饰符(您可以删除它并检查.
匹配换行符 选项)\b
- 在单词开头匹配X
的前导单词边界(X\d{2})
- 第 1 组捕获X
(请注意,如果您不想匹配小写 [=,则必须打开 匹配大小写 18=]) 和任意两位数字(?:(?!X\d{2}).)*
- 匹配任何字符的调节贪婪标记,零次或多次重复,后面不跟X
和任何两位数字。由于它是贪心的,它会补足到下一个字符开始禁止序列的位置,并回溯到后续子模式所需的最后一个"dun"。["\s]
- 空格或双引号([^"\s]+\.dun)
- 第 2 组捕获除空格和双引号以外的一个或多个字符,然后是一个点和一个dun
子字符串|
- 或(?:(?!X\d{2}).)*
- 与上面相同的贪婪标记。
更换详情:
(?{1}
- 如果第 1 组匹配....\t\t\n
- 替换为第一组值、两个制表符、第二组值和换行符
)
- 否则替换为空字符串。