gpt4 book ai didi

用于查找没有嵌套标签的标签的正则表达式

转载 作者:行者123 更新时间:2023-12-01 09:00:05 24 4
gpt4 key购买 nike

我正在尝试编写一个正则表达式,这将有助于在 html 代码中查找未翻译的文本。

翻译的文本意味着他们正在通过特殊标签:或通过构造:${...}

例。未翻译:

<h1>Hello</h1>

翻译的文本是:

<h1><fmt:message key="hello" /></h1>
<button>${expression}</button>

我写了下面的表达式:

\<(\w+[^>])(?:.*)\>([^\s]+?)\</\1\>

它会找到正确的字符串,例如:

<p>text<p>

正确跳过

<a><fmt:message key="common.delete" /></a>

但也捕获了:

<li><p><fmt:message key="common.delete" /></p></li>

而且我不知道如何为这个表达式中的 ${...} 字符串添加异常谁能帮帮我?

最佳答案

如果我理解正确的话,您想确保“标签”中的数据不包含 fmt:messsage${....}

您可以将负前瞻与 . 结合使用断言 . 捕获的字符不是这些情况之一:

/<(\w+)[^>]*>(?:(?!<fmt:message|\$\{|<\/\1>).)*<\/\1>/i

如果你想避免捕获标签内的任何“标签”,你可以忽略 <fmt:message部分,只需使用 [^<]而不是 . - 仅匹配非 <

/<(\w+)[^>]*>(?:(?!\$\{)[^<])*<\/\1>/i

从评论中添加 如果您还想排除“空”标签,请添加另一个否定前瞻 - 这次是 (?!\s*<) - 确保标签内的内容不为空或仅包含空格:

/<(\w+)[^>]*>(?!\s*<)(?:(?!\$\{)[^<])*<\/\1>/i

关于用于查找没有嵌套标签的标签的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2014584/

24 4 0