来自字符串的 Java 正则表达式

标签 java regex

<InstanceIdentifier>118e3040-51d2-11e3-8f96-1110200c9a66</InstanceIdentifier>

这是我的字符串,我想要 118e3040-51d2-11e3-8f96-1110200c9a66 部分。

尝试过这个

Pattern p = Pattern.compile("(\\b<InstanceIdentifier>\\b)(.*?)(\\b<\/InstanceIdentifier>\\b)");

但是当然它不起作用。有建议吗?

最佳答案

只需删除第一个和最后一个 \\b然后删除 / 之前存在的反斜杠

Pattern p = Pattern.compile("(<InstanceIdentifier>\\b)(.*?)(\\b</InstanceIdentifier>)");

Pattern p = Pattern.compile("<InstanceIdentifier>\\b(.*?)\\b</InstanceIdentifier>");
Matcher m = p.matcher(s);
if(m.find())
{
System.out.println(m.group(1));
}

请注意\\b单词字符和非单词字符之间的匹配,因此上述正则表达式必须排除起始 INstanceIdentifier 旁边的单词字符。标签和结束之前 INstanceIdentifier标签。

您的正则表达式失败,因为在行开头和开头之间不存在实际存在的单词字符 <括号 ,同样, > 旁边不存在单词字符和线边界的末端。在本例中,添加 \\B而不是\\b在开始和结束时应该有效。

关于来自字符串的 Java 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31763301/

相关文章:

regex - 匹配分隔列表中的最后一个元素?

python - 如何在正则表达式中捕获从空格 +{n} 到下一个 {n}

java - 如何将用户定义的表类型传递给来自 Java 的 MSSQL 请求

java计算重复的键值对?

java - 为什么调用clip.open后我的jvm崩溃

python - 主题标签后跟常规文本

python - Pandas 在一个月的一天时间从字符串的其余部分 split

java - 我应该使用 Iterator 还是 for 循环来迭代?

java - 在设定的时间在游戏关卡中生成对象

python - 使用正则表达式过滤字符串中的值