我在XHTML文件中有以下行:ri:content-title="Test Title Rename"/>
我也有与此类似的行:ri:content-title="Test Title Outside ri:space-key="Test"/>
我正在尝试整理一个搜索"/>
的正则表达式,但忽略包含ri:space
的行。
使用"(?!\s)
允许我跳过存在" ri"
的那一部分,但我想我不知道如何忽略整行。这样做的诀窍是我想用后缀替换"/>
,例如3.12"/>
,但我不想替换包含ri:space
的行
请注意我将使用此正则表达式使用命令行工具批量更新Confluence页面。
以下是XHTML源代码阅读器的摘录:
<h2>Macro Update Test</h2>
<p>Below is the text and other elements.</p>
<p>
<ac:macro ac:name="pagetree">
<ac:parameter ac:name="root">Test Title Change Rename</ac:parameter>
</ac:macro>
</p>
<p>Title and return link to <ac:link>
<ri:page ri:content-title="Test Title Rename"/>
</ac:link> should be updated.</p>
<p>Link to external location: <ac:link>
<ri:page ri:content-title="Test Title Outside" ri:space-key="Test"/>
</ac:link>.</p>
答案 0 :(得分:0)
你可以试试这个正则表达式
# (ri:content-title\s*=\s*"[^"]*)"\s*/>
( # (1 start)
ri:content-title
\s* = \s*
"
[^"]*
) # (1 end)
" \s*
/>
答案 1 :(得分:0)
由于我不知道你使用的正则表达式引擎,我给你一个原始样式的模式,让你逃避需要:
<\w+(?:[^"r>/]+|"(?>[^"]+|\\{2}|\\.)*"|\Br|r(?!i:[a-z]))*ri:content-title=(?:[^"r>/]+|"(?>[^"]+|\\{2}|\\.)*"|\Br|r(?!i:[a-z]))/>
正如三元组建议的那样,如果你有一些可以处理XML的工具......