我有以下Java正则表达式(https://.*?/ api / FHIR / DSTU2 /)来匹配大型JSON结果中以下模式https://somserver.esm.somedomain.edu/TST/api/FHIR/DSTU2/中的URL,
并将其替换为其他网址 https://api.anotherdomain.edu/FHIR/DSTU2/
我正在替换的URL在JSON结果中多次出现。我正在使用Java replaceAll函数,有时它失败了,我收到错误'Expected','而不是'''。发生这种情况是因为JSON结果在替换过程中被搞砸了,无法正确解析。奇怪的是,我在JAVA正则表达式测试中使用了相同的JSON结果,并且正则表达式看起来运行正常。你在这里看到了什么吗?谢谢!
答案 0 :(得分:1)
试试这个,
1.Object to String with return class java.lang.String
2.使用以下代码表达
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>
final xml Flow将是
import java.util.regex.*;
payload=payload.replaceAll("https[:]//.*./api/FHIR/DSTU2/", "https://api.anotherdomain.edu/FHIR/DSTU2/");
return payload;
答案 1 :(得分:0)
我为此写了一个JUnit案例,试图重现错误。但是,在最后一个链接提供的下面给出了JSON输入,没有错误,并且每次都能正常工作。你能试试这个测试用例吗?
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.io.IOUtils;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.InputStream;
import static org.junit.Assert.fail;
public class RegexReplacementTest {
private static final Logger logger = LoggerFactory.getLogger(RegexReplacementTest.class);
private static final String replacement = "https://api.anotherdomain.edu/FHIR/DSTU2/";
private static final String pattern = "(https://.*?/api/FHIR/DSTU2/)";
private String json;
@Before
public void setup() throws IOException {
InputStream resourceAsStream = this.getClass().getResourceAsStream("/path/to/your/test.json");
json = IOUtils.toString(resourceAsStream);
resourceAsStream.close();
validateJson(json);
}
@Test
public void testReplace() {
String replacedString = json.replaceAll(pattern, replacement);
validateJson(replacedString);
}
private void validateJson(String json) {
ObjectMapper objectMapper = new ObjectMapper();
try {
objectMapper.readTree(json);
}
catch (IOException e) {
logger.error("Error upon testing json!" , e);
fail("Error upon testing json! " + e.getMessage());
}
}
}