【发布时间】:2021-12-07 06:01:42
【问题描述】:
我有这样的正则表达式:
^(?m)[ ]{0,}<img[ ]{0,}(?:\n(?:(?!<img).)*?){1,}[[]src[]]=[""|']{1}(.*?)[""|']{1}(?:\n(?:(?!<img).)*?){0,}[>]{1}$
我想得到一个文件中第一行匹配的内容:
<img
*ngIf="amImg && amImg.sourcePath"
[src]="amImg.sourcePath"
[alt]="amImg.alt">
<p>asdasdasd asd</p>
<img
[src]="amImg.sourcePath"
[alt]="amImg.alt">
正则表达式完美运行,我已经对其进行了测试here...
在这种情况下匹配为 2:
<img
*ngIf="amImg && amImg.sourcePath"
[src]="amImg.sourcePath"
[alt]="amImg.alt">
还有:
<img
[src]="amImg.sourcePath"
[alt]="amImg.alt">
所以第一个匹配的第一组结果应该是amImg.sourcePath,它有一些行号
第二场比赛第一组结果应该是amImg.sourcePath,其中有另一个行号
我试过了:
(select-string -path $path -pattern $pattern) | ForEach-Object{...}
等等……但它甚至找不到匹配项……
【问题讨论】:
-
您需要传递
-Raw参数来读取包含所有换行符的文件到单个变量中,否则,正则表达式引擎无法找到跨行的跨度匹配。 -
@WiktorStribiżew 但是我怎样才能得到行号呢?
-
正则表达式匹配是不知道的行号。需要单独获取匹配行号。
-
我明白.. 但如何?
标签: regex powershell