正则表达式获得正数

时间:2020-05-06 10:17:37

标签: android regex

我有一个字符串,其中包含一个数字,并且我想从该字符串中获取所有数字,因为我有此正则表达式(\ d +),但它没有用。

enter image description here

我还想包括那些在红色方块中提到的内容,我需要在正则表达式中进行哪些更改。

修改:相关代码

String regex = "( \\d+ )";
        Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
        Matcher m = p.matcher(textView.getText());

        while (m.find()) {
            String number = m.group().replace(" ", "");
            WAAFILogger.d("Number-regex", ":"+number+":");
            int startIndex = messageText.indexOf(number);
            int endIndex = startIndex + number.length() - 1;

            builder.setSpan(message.getSpannableListenerForNumber(number),
                    startIndex,
                    endIndex + 1,
                    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

            textView.setMovementMethod(LinkMovementMethod.getInstance());

        }

1 个答案:

答案 0 :(得分:1)

您可以使用以下两种之一:

\+?\b\d+(?!\S)
\+?(?<!\d|\d\.)\d+(?!\.?\d)

请参见regex demo #1regex demo #2。详细信息:

  • \+?-可选的+符号
  • \b-单词边界
  • (?<!\d|\d\.)-如果在当前位置的左侧紧接着有一个或多个数字+ .,则负向后搜索将使匹配失败。
  • \d+-1个以上数字
  • (?!\S)-如果在当前位置的右边不存在非空白字符,则负向超前将导致匹配失败
  • (?!\.?\d)-如果在当前位置的右边有一个可选的.和一个数字,则负向超前将使匹配失败。