gpt4 book ai didi

java - 正则表达式(java)中的错误在哪里?

转载 作者:行者123 更新时间:2023-11-29 03:40:33 24 4
gpt4 key购买 nike

我的 xml 文件看起来像:

<?xml version="1.0" encoding="UTF-8"?>
<stylesheet xmlns="http://www.w3.org/1999/XSL/Transform" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output indent="yes"/>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8" content="text/html" http-equiv="Content-Type"/>
</head>
<body>


<div>&nbsp;</div>

Hello body content !!

</body>
</html>
</xsl:template>
<xsl:template name="br-replace">
<xsl:param name="word"/>
<xsl:choose>
<xsl:when test="contains($word,'&#xA;')">
<xsl:value-of select="substring-before($word,'&#xA;')"/>
<br xmlns="http://www.w3.org/1999/xhtml"/>
<xsl:call-template name="br-replace">
<xsl:with-param name="word" select="substring-after($word,'&#xA;')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$word"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="format-date">
<xsl:param name="word"/>
<xsl:value-of select="substring($word, 1, 10)"/>
</xsl:template>
</stylesheet>

我试着把它分成三个部分:

  1. <body> 之前的文字
  2. <body> and </body> 之间的文本
  3. </body> 之后的文本

Java代码:

Matcher before = Pattern.compile("(.*?)<body>", Pattern.MULTILINE | Pattern.DOTALL | Pattern.CASE_INSENSITIVE)
.matcher(input);
String beforeStr = null;
if (before.find()) {
beforeStr = before.group(1);
}

Matcher after = Pattern.compile("</body>(.*?)", Pattern.MULTILINE | Pattern.DOTALL | Pattern.CASE_INSENSITIVE)
.matcher(input);
String afterStr = null;
if (after.find()) {
afterStr = after.group(1);
}

Matcher body = Pattern.compile("<body>(.*?)</body>",
Pattern.MULTILINE | Pattern.DOTALL | Pattern.CASE_INSENSITIVE).matcher(input);
String bodyStr = null;
if (body.find()) {
bodyStr= body.group(1);
}

知道为什么 String 'afterStr' 是空的,模式有问题吗?

最佳答案

非贪婪量词,没有右边的东西。

"</body>(.*?)"
^matches as little as possible. In this case, 0 characters.

只需使用贪心匹配:

</body>(.*)

以上将做你想做的。

关于java - 正则表达式(java)中的错误在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13395418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com