我有一个看起来像的字符串:
Hi, <name> pls visit <url>
现在我想将字符串拆分为带有正则表达式的数组。
我试过这个:
hi.split("(?=<[A-Za-z]+>)");
Output: [Hi, , <name> pls visit , <url>]
但我想拥有
[Hi, , <name> , pls visit , <url>]
有机会这样做吗?
答案 0 :(得分:4)
String s="Hi, <name> pls visit <url>";
String[] ss = s.split("(?<=> )|(?=<)");
System.out.println(Arrays.toString(ss));
以上代码输出:
[Hi, , <name> , pls visit , <url>]
答案 1 :(得分:2)
你可以尝试
String str="Hi, <name> pls visit <url>";
System.out.println(Arrays.toString(str.split("(?=<)|(?<=> )")));
输出:
[Hi, , <name> , pls visit , <url>]
(?=<)|(?<=> )
模式说明:
(?= look ahead to see if there is:
< '<'
) end of look-ahead
| OR
(?<= look behind to see if there is:
> '> '
) end of look-behind
答案 2 :(得分:0)
你已经在使用前瞻,我相信正则表达式的Java风格也有所了解。如下所示:
hi.split("(?=<[A-Za-z_]\\w*>)|(?<=<[A-Za-z_]\\w*>)");
(注意:我将其更改为[A-Za-z_]\w*
所以&lt; _this3&gt;也会匹配,但&lt; 5thing&gt;不会)