我有一个字符串,我需要使用正则表达式分成两部分
String string = "2pbhk";
此字符串我需要分为2p
和bhk
超过第二部分的内容应始终为bhk
或rk
,因为字符串可以是1bhk
,5pbhk
等
我试过了
String pattern = ([^-])([\\D]*);
答案 0 :(得分:2)
您可以使用以下正则表达式"(?=bhk|rk)"
进行拆分。
str.split("(?=bhk|rk)");
如果有bhk
或rk
。
答案 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)
如果您希望拆分以 rk
或bhk
结尾但不一定在字符串末尾(即字边界处)的字符串,需要使用\\b
的正则表达式:
String[] arr = "5ddddddpbhk".split("(?=(?:rk|bhk)\\b)");
System.out.println(Arrays.toString(arr));
如果要允许在较长的字符串内拆分,请删除\\b
。
如果您只拆分单个字词,请使用$
代替\\b
(即字符串结尾):
(?=(?:rk|bhk)$)
这是我的IDEONE demo