我正在尝试执行一个java代码,该代码将执行以下regEx,但无法获得所需的结果.它永远不会进入if()块

  • 本文关键字:代码 执行 结果 if 永远 一个 java regEx java regex
  • 更新时间 :
  • 英文 :

<https://sentry.io/api/0/projects/{org-slug}/{project-slug}/issues/?&cursor=1619685938645:0:1>; rel="previous"; results="false"; cursor="1619685938645:0:1", <https://sentry.io/api/0/projects/theloops/java-project/issues/?&cursor=1618813765615:1:0>; rel="next"; results="true"; cursor="1618813765615:1:0"

上面是我需要捕获第二个";结果";元素,看看它是真是假,我正在尝试

String link = "<https://sentry.io/api/0/projects/{org-slug}/{project-slug}/issues/?&cursor=1619685938645:0:1>; rel="previous"; results="false"; cursor="1619685938645:0:1", <https://sentry.io/api/0/projects/theloops/java-project/issues/?&cursor=1618813765615:1:0>; rel="next"; results="true"; cursor="1618813765615:1:0"";
log.info(link);
if(link.matches("/\(?+1\).+(results)="true"/"))
bool = true; //(bool is a boolean)

但是变量"bool"不是真正的

有人能帮我吗?

在java中,与许多其他语言不同,String#matches方法只有在整个字符串与正则表达式匹配时才返回true。这通常是通过在正则表达式的每一端添加.*来实现的。

此外,在正则表达式的任何风格中,正向斜杠都没有任何特殊的含义,尽管一些语言允许斜杠分隔正则表达式(java不是其中之一(,所以除非您真的想在那里匹配斜杠,否则它们不应该用作第一个和最后一个字符。

要知道第二个results是否为true:

bool = link.matches(".*results=.*results="true".*"))

观看现场演示。

也要注意去掉不必要的括号。

我发现这个regEx更有用:

"results="([a-z]+)";\s+cursor="([0-9]+:[0-9]+:[0-9]+)""

最新更新