用于查找没有嵌套标记的标记的Regexp
我正在尝试编写一个regexp,它将有助于在html代码中查找未翻译的文本 翻译文本意味着它们要经过特殊标记:或构造:${…} 例:非翻译:用于查找没有嵌套标记的标记的Regexp,regex,Regex,我正在尝试编写一个regexp,它将有助于在html代码中查找未翻译的文本 翻译文本意味着它们要经过特殊标记:或构造:${…} 例:非翻译: <h1>Hello</h1> 你好 译文如下: <h1><fmt:message key="hello" /></h1> <button>${expression}</button> ${expression} 我写了以下表达式: \<(\w+[^>]
<h1>Hello</h1>
你好
译文如下:
<h1><fmt:message key="hello" /></h1>
<button>${expression}</button>
${expression}
我写了以下表达式:
\<(\w+[^>])(?:.*)\>([^\s]+?)\</\1\>
(?:.*)\>([^\s]+?)\
它会找到正确的字符串,如:
<p>text<p>
文本
正确跳过
<a><fmt:message key="common.delete" /></a>
但也抓住了:
<li><p><fmt:message key="common.delete" /></p></li>
我不知道如何在这个表达式中为${…}字符串添加异常
有人能帮我吗?如果格式像您的示例中那样简单,您可以尝试以下方法:
<(\w+)>(?:(?!<fmt:message).)+</\1>
(?:(?!我成功地使用了这样一个简单的方法
]+)[^>]*>([^如果我理解正确,您希望确保“标记”中的数据不包含fmt:message
或${..}
您可以将负前瞻与
组合使用,以断言
捕获的字符不属于以下情况之一:
/<(\w+)[^>]*>(?:(?!<fmt:message|\$\{|<\/\1>).)*<\/\1>/i
从注释中添加如果您还想排除“空”标记,请添加另一个负面前瞻-这次(?!\s*(?!\s*重写为更正式的问题:
你能匹配吗
aba
但不是
aca
不着边际
abcba
对
金融稳定机制:
Start->A->B->A->Terminate
插入abcba并运行它
Start is ready for input.
a -> MATCH, transition to A
b -> MATCH, transition to B
c -> FAIL, return fail.
也看到
有关使用正则表达式解析html的讨论
执行摘要:不要Checkout=)。你应该改用html解析器。@notnoop:但那不是html,那是JSTL。虽然..我不知道JSTL,但如果它格式足够好,那么你可以使用XML解析器。我真的很想看到一个包含尖括号的东西的regexp问题,这个问题在哪里[在某些评论中没有链接它比我的效果更好,但仍然捕获hi(这里我只需要嵌套的'p'标记)和不错,但它不适用于具有属性的标记,如hi 后一种情况是最好的!它不像前一种情况那样贪婪(不匹配某物,但只匹配某物)。我唯一不知道如何排除空白(即不匹配“”)的地方是不是仍然匹配某个东西
?当它到达
时,它无法判断它是否在标记内。@kemp-不,它不匹配啊,我明白你的意思,我想某个东西应该完全失败
/<(\w+)[^>]*>(?!\s*<)(?:(?!\$\{)[^<])*<\/\1>/i
Start is ready for input.
a -> MATCH, transition to A
b -> MATCH, transition to B
c -> FAIL, return fail.