是否有正则表达式来删除包含特定单词的标签之间的文本
Is there a regex expression to remove text between tags containing a specific word
我制作了一个正则表达式来删除 <FormattingRule
和 </FormattingRule>
之间的文本
现在我还想包括一个额外的条件:它必须包含 EdtJobEmpId。
有人可以帮助我吗?
我试过以下正则表达式:
<FormattingRule(.|\n)*?<\/FormattingRule>
可以在网站上找到:https://regex101.com/r/ttUMON/1
我想根据额外条件删除以下文本:
<FormattingRule Action="OnChange">
<Triggers>
<Trigger PropertyName="${EdtJobEmpId}" />
</Triggers>
<Choose>
<When Condition="${EdtJobSkcId}==Empty">
<Assign PropertyName="${EdtJobSkcId.Value}" Value="=${EdtEmpSkcId.Value}" />
</When>
</Choose>
</FormattingRule>
没有正则表达式每次都能 100% 正确。例如,大多数尝试都会被源代码中的注释、CDATA 部分以及实体或字符引用等内容所击败。
完成这项工作的正确工具是 XSLT。
这是完成的方式。
如果您认为自己会 运行 遇到 html/xml 有
的问题
可以隐藏标记的构造,例如 Comments 或 CDATA(或其他任何东西)
如果您对此感到担心,请告诉我,我会对此进行修补
具有几个函数的正则表达式可以消耗那些坏男孩。
(?:<(?:(FormattingRule)(?:\s+(?>"[\S\s]*?"|'[\S\s]*?'|(?:(?!/>)[^>])?)+)?\s*>)(?:(?!</\s*>)[\S\s])*?EdtJobEmpId(?:[\S\s]*?</\s*>|(*SKIP)(*FAIL)))
https://regex101.com/r/Plih3R/1
可读版本
(?:
<
(?:
( # (1 start), End tag req'd
FormattingRule
) # (1 end)
(?:
\s+
(?>
" [\S\s]*? "
| ' [\S\s]*? '
| (?:
(?! /> )
[^>]
)?
)+
)?
\s* >
)
(?:
(?! </ \s* > )
[\S\s]
)*?
EdtJobEmpId
(?:
[\S\s]*? </ \s* >
|
(*SKIP)(*FAIL)
)
)
此正则表达式仅匹配 <FormattingRule>
个包含 EdtJobEmpId
:
的节点
(?m)<FormattingRule((?!/FormattingRule).)*EdtJobEmpId((?!/FormattingRule).)*\/FormattingRule>
它的工作原理是使用 "multi-line" 标志 (?m)
和否定前瞻 (?!/FormattingRule)
不匹配当前匹配标签之外的内容。
我制作了一个正则表达式来删除 <FormattingRule
和 </FormattingRule>
现在我还想包括一个额外的条件:它必须包含 EdtJobEmpId。
有人可以帮助我吗?
我试过以下正则表达式:
<FormattingRule(.|\n)*?<\/FormattingRule>
可以在网站上找到:https://regex101.com/r/ttUMON/1
我想根据额外条件删除以下文本:
<FormattingRule Action="OnChange">
<Triggers>
<Trigger PropertyName="${EdtJobEmpId}" />
</Triggers>
<Choose>
<When Condition="${EdtJobSkcId}==Empty">
<Assign PropertyName="${EdtJobSkcId.Value}" Value="=${EdtEmpSkcId.Value}" />
</When>
</Choose>
</FormattingRule>
没有正则表达式每次都能 100% 正确。例如,大多数尝试都会被源代码中的注释、CDATA 部分以及实体或字符引用等内容所击败。
完成这项工作的正确工具是 XSLT。
这是完成的方式。
如果您认为自己会 运行 遇到 html/xml 有
的问题
可以隐藏标记的构造,例如 Comments 或 CDATA(或其他任何东西)
如果您对此感到担心,请告诉我,我会对此进行修补
具有几个函数的正则表达式可以消耗那些坏男孩。
(?:<(?:(FormattingRule)(?:\s+(?>"[\S\s]*?"|'[\S\s]*?'|(?:(?!/>)[^>])?)+)?\s*>)(?:(?!</\s*>)[\S\s])*?EdtJobEmpId(?:[\S\s]*?</\s*>|(*SKIP)(*FAIL)))
https://regex101.com/r/Plih3R/1
可读版本
(?:
<
(?:
( # (1 start), End tag req'd
FormattingRule
) # (1 end)
(?:
\s+
(?>
" [\S\s]*? "
| ' [\S\s]*? '
| (?:
(?! /> )
[^>]
)?
)+
)?
\s* >
)
(?:
(?! </ \s* > )
[\S\s]
)*?
EdtJobEmpId
(?:
[\S\s]*? </ \s* >
|
(*SKIP)(*FAIL)
)
)
此正则表达式仅匹配 <FormattingRule>
个包含 EdtJobEmpId
:
(?m)<FormattingRule((?!/FormattingRule).)*EdtJobEmpId((?!/FormattingRule).)*\/FormattingRule>
它的工作原理是使用 "multi-line" 标志 (?m)
和否定前瞻 (?!/FormattingRule)
不匹配当前匹配标签之外的内容。