gpt4 book ai didi

Java正则表达式只找到一个匹配项

转载 作者:行者123 更新时间:2023-12-01 23:22:28 24 4
gpt4 key购买 nike

我正在使用以下正则表达式:

(?<=<((Pswrd>)|([^/]{1,2147483646}?:Pswrd>)))((?s).+?)(?=</(\\1))

我有以下文本要匹配:

<abc:Pswrd>PASSWORD_ONE</abc:Pswrd>
<Pswrd>PASSWORD_TWO</Pswrd>

我需要匹配两个 XML 标记的上下文,但仅适用于第二个标记。

输出为:

PASSWORD_TWO

它应该是:

PASSWORD_ONE
PASSWORD_TWO

似乎 OR 由于某种原因不起作用?

 String message = "    <abc:Pswrd>PASSWORD_ONE</abc:Pswrd>\n" +
" <Pswrd>PASSWORD_TWO</Pswrd>";

String regex = "(?<=<((Pswrd>)|([^/]{1,2147483646}?:Pswrd>)))((?s).+?)(?=</(\\1))";
Pattern pattern = Pattern.compile(regex);

Matcher matcher = pattern.matcher(message);
while (matcher.find()) {
String group = matcher.group();
System.out.println(group);
}

谢谢

更新:需要是匹配组0。

最佳答案

所以为了匹配 <Pswd><abc:Pswd><something:Pswd> ,正则表达式需要类似于 <\w*:*Pswrd> 。然而问题是,后面的外观不喜欢非固定宽度量词,因此您无法创建迎合“动态”的后面外观

相反,我建议只做一些简单的事情,例如:

(?<=Pswrd>)(.*)(?=<\/)

本质上,在这里您只需查找开始标记的最后一位(即“Pswrd>”),然后匹配该标记与结束标记部分之间的任何内容。

关于Java正则表达式只找到一个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58323440/

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