我有一些字符串:
我想将19与(" x"或"。"一次或多次)和100分开。 我试图使用正则表达式:
(x|\.)+
分组,但不能匹配上面的所有情况。哪个正则表达式可以匹配上面的所有情况?
答案 0 :(得分:1)
您可以使用正则表达式:
public static Matcher split(String text) {
Pattern pattern = Pattern.compile("(\\d+)(x*)(\\s*)(\\.*)(\\d+)");
Matcher matcher = pattern.matcher(text);
matcher.find();
return matcher;
}
此正则表达式适用于测试数据:
19xx.100
19x.100
19..100
19x .100
之后matcher.group(1)
将返回19
而matcher.group(5)
将返回100
答案 1 :(得分:1)
对于您的示例,您可以捕获2个捕获组中100和100之前的内容:
<强>解释强>
(
\d+
x
,.
或空格[x. ]+
)
(\d+)
答案 2 :(得分:1)
您可以使用
(\d+)(\s*[x.][x.\s]*)(\d+)
请参阅regex demo
<强>详情
(\d+)
- 第1组:一个或多个数字(\s*[x.][x.\s]*)
- 第2组:
\s*
- 0+ whitespaces [x.]
- x
或.
[x.\s]*
- 0 +字符x
,.
或空格字符(\d+)
- 第3组:一个或多个数字