问题描述
我有一个字符串,需要使用正则表达式将其分为两部分
String string = "2pbhk";
我需要将此字符串分为2p
和bhk
第二部分的内容应始终为bhk
或rk
,因为字符串可以是1bhk
, 5pbhk
等之一
我努力了
String pattern = ([^-])([\\D]*);
1楼
您可以将以下正则表达式"(?=bhk|rk)"
与split一起使用。
str.split("(?=bhk|rk)");
如果bhk
或rk
之一, bhk
其拆分。
2楼
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";
}
尝试一次以上,不使用正则表达式,但应该可以。
3楼
这应该可以解决问题:
(.*)(bhk|rk)
第一个捕获包含“数字”部分,第二个捕获包含bhk OR rk。
问候
4楼
如果您要拆分以 rk
或bhk
但不一定在字符串末尾(即在单词边界处)的字符串,则需要使用带有\\\\b
的正则表达式:
String[] arr = "5ddddddpbhk".split("(?=(?:rk|bhk)\\b)");
System.out.println(Arrays.toString(arr));
如果要允许在更长的字符串内分割,请删除\\\\b
。
如果仅拆分单个单词,请使用$
代替\\\\b
(即字符串的结尾):
(?=(?:rk|bhk)$)
这是我的