【发布时间】:2018-02-02 16:31:56
【问题描述】:
我有一个这样的 XML 输出(
<xml>http://localhost:8080/def/abc/xyx</xml>
<element xlink:href="http://localhostABCDEF/def/ABC/XYZ">Some Text</element>
...
我想做的是使用 Java 正则表达式替换域模式(我不知道现有域):
"http(s)?://.*/def/.*
带有输入域(例如:http://google.com/def),结果将是:
<xml>http://google.com/def/abc/xyx</xml>
<element xlink:href="http://google.com.com/def/ABC/XYZ">Some Text</element>
...
我该怎么做?我认为 Java 中的 Regex 可以做或 String.replaceAll (但这似乎不可能)。
【问题讨论】:
-
我会使用 XML 解析器(如果您的文件很小,则使用 DOM,否则使用事件驱动)并且对于您知道的每个元素都将包含 URL(在您的情况下,显然是
xml),用该元素初始化一个URL对象,获取URL对象的path,然后用不同的域再次构造。 -
在你的正则表达式中使用反向引用 "http(s)?://(.*)/def/.*"
-
对一个密切相关的问题的史诗般的回答:stackoverflow.com/questions/1732348/…
-
为什么在你的
xml标签路径/def/abc/xyx小写和href大写/def/ABC/XYZ? -
@LuisMuñoz 您没有在发布的内容中添加任何反向引用,您只是复制了原始正则表达式并粘贴了它。我错过了什么吗?
标签: java regex xml parsing url