我有以下文字
">UNWANTEDTEXT">APRODUCT</ProductCode>
我正在构建一个正则表达式语句,我希望的结果是文本
APRODUCT
我现在的正则表达式就是这个。
">(.*?)<\/ProductCode>
我面临的问题是,“&gt; 的相同文本模式在开始时出现...我需要一种方法来告诉正则表达式只查看最后一次出现的“&GT;然后在它与 </ProductCode>
答案 0 :(得分:2)
最简单的解决方案是指出您要匹配的字符而不是任何字符,即任何不是结束尖括号的字符:
([^>]*)<\/ProductCode>
如果字符串可以包含一个结束尖括号,如果它前面没有引号,那么解决方案就会变得更加毛躁。假设您的正则表达式库支持零宽度断言:
(?:">)?((?:(?!">).)*)<\/ProductCode>
希望这有帮助!
我还想补充一点,如果您正在解析SGML,您可能会考虑使用专用于此目的的库,而不是尝试基于正则表达式拼凑您自己的解析器。该路径为fraught with peril。