<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]+)""