当前位置: 代码迷 >> java >> 溢出的字符串和带有枚举值的字符串结尾匹配
  详细解决方案

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

热度:84   发布时间:2023-07-31 11:03:24.0

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

String string = "2pbhk";

我需要将此字符串分为2pbhk

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

我努力了

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

您可以将以下正则表达式"(?=bhk|rk)"与split一起使用。

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

如果bhkrk之一, bhk其拆分。

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";
}

尝试一次以上,不使用正则表达式,但应该可以。

这应该可以解决问题:

(.*)(bhk|rk)

第一个捕获包含“数字”部分,第二个捕获包含bhk OR rk。

问候

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

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

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

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

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

这是我的

  相关解决方案