溢出的字符串和匹配字符串的结尾与枚举值

时间:2015-07-17 10:15:14

标签: java regex

我有一个字符串,我需要使用正则表达式分成两部分

String string = "2pbhk";

此字符串我需要分为2pbhk

超过第二部分的内容应始终为bhkrk,因为字符串可以是1bhk5pbhk

之一

我试过了

String pattern = ([^-])([\\D]*);

4 个答案:

答案 0 :(得分:2)

您可以使用以下正则表达式"(?=bhk|rk)"进行拆分。

str.split("(?=bhk|rk)");

如果有bhkrk

,则会将其拆分

答案 1 :(得分:0)

String string = "2pbhk";
String first_part, second_part = null;
if(string.contains("bhk")){
first_part = string.substring(0, string.indexOf("bhk"));
second_part = "bhk";
}
else if(string.contains("rk")){
first_part = string.substring(0, string.indexOf("rk"));
second_part = "rk";
}

尝试上述操作一次,不要使用 regex ,但应该可以使用。

答案 2 :(得分:0)

这应该可以解决问题:

(.*)(bhk|rk)

第一次捕获持有"数字"部分和第二个bhk OR rk。

此致

答案 3 :(得分:0)

如果您希望拆分 rkbhk结尾但不一定在字符串末尾(即字边界处)的字符串,需要使用\\b的正则表达式:

String[] arr = "5ddddddpbhk".split("(?=(?:rk|bhk)\\b)");
System.out.println(Arrays.toString(arr));

如果要允许在较长的字符串内拆分,请删除\\b

如果您只拆分单个字词,请使用$代替\\b(即字符串结尾):

(?=(?:rk|bhk)$)

这是我的IDEONE demo