我正在尝试使用正则表达式将字符串分成两个字符串
例如
String original1 = "Calpol Plus 100MG";
上面的字符串应该分成
String string1 = "Calpol Plus";
和 String string2 = "100MG";
我尝试.split(" ")
在字符串上使用该方法,但仅当原始字符串为"Calpol 100MG"
由于我是正则表达式的新手,因此我搜索了一些正则表达式并将其制成正则表达式,"[^0-9MG]"
但是它仍然无法在像这样的字符串上运行"Syrup 10ML"
我想使用一个通用的正则表达式,它可以在两种类型的字符串上工作。
只需根据<number>MG
字符串或<number>ML
字符串之前的一个或多个空格字符将输入分割即可。
string.split("\\s+(?=\\d+M[LG])"); // Use this regex "\\s+(?=\\d+(?:\\.\\d+)?M[LG])" if the there is a possibility of floating point numbers.
例子:
String original1 = "Calpol Plus 100MG";
String strs[] = original1.split("\\s+(?=\\d+M[LG])");
for (int i=0; i<strs.length; i++) {
System.out.println(strs[i]);
}
将结果分配给变量。
String original1 = "Calpol Plus 100MG";
String strs[] = original1.split("\\s+(?=\\d+M[LG])");
String string1 = strs[0];
String string2 = strs[1];
System.out.println(string1);
System.out.println(string2);
输出:
Calpol Plus
100MG
代码2:
String original1 = "Syrup 10ML";
String strs[] = original1.split("\\s+(?=\\d+M[LG])");
String string1 = strs[0];
String string2 = strs[1];
System.out.println(string1);
System.out.println(string2);
输出:
Syrup
10ML
解释:
\s+
匹配一个或多个空格字符。(?=\\d+M[LG])
正向超前断言,匹配项后必须跟一个或多个数字\d+
,然后再跟MG
或ML
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句