正则表达式匹配 2 个字符串 + Java 中的所有出现

现货

我需要使用java在2个特定单词之间匹配和替换反斜杠\与正斜杠/。我试过了,它在正则表达式测试器https://regexr.com/474s0 中运行良好,但当我从基于 Java 的应用程序测试时不起作用;得到这个错误。

org.apache.oro.text.regex.MalformedPatternException: 序列 (?<...) 无法识别

正则表达式尝试: (?<=<(DocumentImagePath)>.*?)(\\)(?=.*<\/(DocumentImagePath)>)

样本 :

<DocumentImagePath>95230-88\M0010002F.tif\test</DocumentImagePath> <DocumentImagePath>123-88\M0010002F.tif\test</DocumentImagePath> <DocumentImagePath>abc-88\M0010002F.tif\test</DocumentImagePath>

任何帮助表示赞赏。

注意:我知道并非所有编译器都支持正面的外观,但正在寻找适用于 Java 的合适的替代正则表达式。

安德烈亚斯

你可以这样做(Java 9+):

String sample = "<DocumentImagePath>95230-88\\M0010002F.tif\\test</DocumentImagePath>\r\n" +
                "95230-88\\M0010002F.tif\\test\r\n" +
                "<DocumentImagePath>123-88\\M0010002F.tif\\test</DocumentImagePath>\r\n" +
                "<DocumentImagePath>abc-88\\M0010002F.tif\\test</DocumentImagePath>\r\n";

String result = Pattern.compile("<DocumentImagePath>.*?</DocumentImagePath>")
                       .matcher(sample)
                       .replaceAll(r -> r.group().replace('\\', '/'));

System.out.println(result);

输出

<DocumentImagePath>95230-88/M0010002F.tif/test</DocumentImagePath>
95230-88\M0010002F.tif\test
<DocumentImagePath>123-88/M0010002F.tif/test</DocumentImagePath>
<DocumentImagePath>abc-88/M0010002F.tif/test</DocumentImagePath>

更新:对于 Java 8 及更早版本,请使用以下代码:

StringBuffer buf = new StringBuffer();
Matcher m = Pattern.compile("<DocumentImagePath>.*?</DocumentImagePath>").matcher(sample);
while (m.find())
    m.appendReplacement(buf, m.group().replace('\\', '/'));
String result = m.appendTail(buf).toString();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

正则表达式匹配 2 个字符之间的所有字符串

Java正则表达式在字符串中某个单词前后获得2个字符串

正则表达式匹配2个字符串之间的最后一次出现

正则表达式,以匹配每行中除最后2个字符串以外的所有字符串<python>

Java正则表达式用于字符串中的多个字符串模式

使用正则表达式提取2个字符之间的所有子字符串组合

正则表达式匹配字符串中的所有 java 运算符

正则表达式在2个字符串之间匹配特定字符

如何使用正则表达式或不使用字符串中的正则表达式在空格后获取 2 个字符

正则表达式,2 个字符串之间的字符没有正向后视

Javascript正则表达式匹配字符串,仅出现__个字符

Java正则表达式匹配列表中的一个或多个字符

仅当模式在整个字符串中匹配时,正则表达式测试才应返回true。Java脚本

正则表达式匹配字符串中的单个字符

如何在 2 个字符串之间匹配正则表达式 JavaScript

JAVA检查句子中以正则表达式模式结尾的多个字符串

正则表达式匹配多个字符串,中间有char

单个字符串中的多个正则表达式模式匹配

Java-抓住两个字符串之间的所有字符串的最佳方法?(正则表达式?)

Java中的首次匹配之前具有正则表达式的子字符串

Android Java正则表达式匹配除一个字符外的所有字符

如何编写正则表达式以匹配字符串中的所有单个字符?

分割不包含与Java中的正则表达式匹配的相邻字符的字符串

Scala正则表达式:查找包含预定义标记或包含2-4个字符的任何单词的字符串中的所有匹配项

Java 正则表达式。匹配任何前面没有给定字符串的“值”

正则表达式匹配两个字符串之间多次出现的字符串

字符串模式与Java中的正则表达式匹配

Java正则表达式,用于匹配字符串中的多个键

正则表达式-从JAVA中的字符串语句中匹配邮政编码