请帮我创建好的正则表达式。我有这样一个字符串:
'text&variable=tekst2&categories=metal;wood&author:elvis;arnold'
我需要将所有类别检索为分离的字符串,因此结果应为2个字符串:'metal'
和'wood'
。
如果是三个或四个类别,结果应该是三个或四个分开的字符串。
我创造了我的灵魂,但它只给了一个字符串。
/(?<=&categories=).*?([^;&]+)/
在线演示在那里: https://regex101.com/r/G6pRUQ/2
如何获得可以提供所有类别的正则表达式?
答案 0 :(得分:2)
PCRE正则表达式将类别匹配为多个匹配项,请使用
(?:\G(?!\A);*|[&?]categories=)\K[^;&]+
请参阅regex demo。
<强>详情:
(?:\G(?!\A);*|[&?]categories=)
- 匹配&
或?
,categories=
,或上一次成功匹配和0 +分号结束\K
- 省略目前为止匹配的文字[^;&]+
- 除;
和&
以外的1个或多个字符。答案 1 :(得分:0)
我不确定您使用的是哪种语言,但在Java中我会使用以下代码:
String str = "text&variable=tekst2&categories=metal;wood&author:elvis;arnold";
Pattern pattern = Pattern.compile("&categories=(.*?)&");
Matcher matcher = pattern.matcher();
ArrayList<String> categories = new ArrayList<>();
while(matcher.find()){
categories.add(matcher.group(1));
}
请检查您使用的语言的语法。但基本逻辑与上述类似。