首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java正则表达式匹配列表中的一个或多个字符

Java正则表达式匹配列表中的一个或多个字符
EN

Stack Overflow用户
提问于 2018-03-07 07:39:30
回答 3查看 3.6K关注 0票数 1

我有一些条件:

  • 共计19xx.100
  • 共计19x.100
  • 共计19.100
  • 共计19倍.100

我想把19和("x“或”“)分开。一次或多次)和100次。我试着用regex:

代码语言:javascript
运行
复制
 (x|\.)+

要分组,但不能匹配以上所有情况。哪个正则表达式可以匹配以上所有的情况?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-03-12 16:12:58

你可以用

代码语言:javascript
运行
复制
(\d+)(\s*[x.][x.\s]*)(\d+)

regex演示

详细信息

  • (\d+) -第1组:一个或多个数字
  • (\s*[x.][x.\s]*) -第2组:
    • \s* - 0+白空间
    • [x.] - x.
    • [x.\s]* - 0+字符,可以是x.或空格字符。

  • (\d+) -第3组:一个或多个数字
票数 1
EN

Stack Overflow用户

发布于 2018-03-07 08:09:05

您可以使用regex:

代码语言:javascript
运行
复制
public static Matcher split(String text) {
    Pattern pattern = Pattern.compile("(\\d+)(x*)(\\s*)(\\.*)(\\d+)");
    Matcher matcher = pattern.matcher(text);
    matcher.find();

    return matcher;
}

此正则表达式适用于测试数据:

代码语言:javascript
运行
复制
19xx.100
19x.100
19..100
19x .100

之后,matcher.group(1)将返回19matcher.group(5)将返回100

票数 1
EN

Stack Overflow用户

发布于 2018-03-07 09:00:14

对于您的示例,您可以在两个捕获组中捕获100和100之前的内容:

(\d+[x. ]+)(\d+)

解释

  • 捕获组(第1组) (
  • 匹配一个或多个数字\d+
  • 使用字符类匹配一次或多次x.或空格[x. ]+
  • 闭合捕获组)
  • 在一组(第2组)中捕获一个或多个数字(\d+)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49146533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档