【发布时间】:2015-12-17 00:05:12
【问题描述】:
我正在解析一个大型 XML 文件以查找某些内容,例如
$matches = [regex]::matches($content, '(<ac:structured-macro.+?ac:name="jira".+?</ac:structured-macro>)'
即返回以 <ac:structured-macro> 开头和结尾的部分,其中包含“jira”。
我发现的也是其他记录,例如
<ac:structured-macro blah blah </ac:structured-macro>
<ac:structured-macro blah ac:name="jira" blah </ac:structured-macro>
我希望它只找到包含“jira”的那些。
如果你找到结尾“ac:structured-macro”而没有找到“jira”部分重新开始搜索,我怎么告诉它?
一旦我找到这个,我需要在这个匹配中获取零件。
.+?(item1).+?(item2)是语法吗? (类似于 C#)
源样本:
<ac:structured-macro ac:name="jira">
<ac:parameter ac:name="columns">key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution</ac:parameter>
<ac:parameter ac:name="server">JIRA (site.atlassian.net)</ac:parameter>
<ac:parameter ac:name="serverId">72f475d9-a9b2</ac:parameter>
<ac:parameter ac:name="jqlQuery">project = PLATFORM AND issuetype in (Bug, Question, Story) AND fixVersion = 1.12.1 AND component = "UI Framework" </ac:parameter>
<ac:parameter ac:name="maximumIssues">20</ac:parameter>
</ac:structured-macro>
【问题讨论】:
-
请仅将 sn-ps 用于实际可运行的 javascript、css 或 html。它们不用于其他任何用途。
-
注意:我应该补充一点,结构内部还有许多其他项目,所以 [^
-
@GregBRoberts 编辑问题以包含代码;除此之外,请停止对问题表示感谢;它分散了问题的注意力,并不是真正被这里接受的东西。最后,您可以通过在块前添加四个空格来格式化代码。有关签名/感谢/称呼的更多信息,请参阅here。
-
那我建议转换成xml并解析。检查这篇文章stackoverflow.com/a/18035655/5290909 ...如果你坚持使用正则表达式,要匹配嵌套元素,你必须使用balancing groups
标签: regex xml powershell