我有一个字符串,其中包含一个数字,并且我想从该字符串中获取所有数字,因为我有此正则表达式(\ d +),但它没有用。
我还想包括那些在红色方块中提到的内容,我需要在正则表达式中进行哪些更改。
修改:相关代码
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());
}
答案 0 :(得分:1)
您可以使用以下两种之一:
\+?\b\d+(?!\S)
\+?(?<!\d|\d\.)\d+(?!\.?\d)
请参见regex demo #1和regex demo #2。详细信息:
\+?
-可选的+
符号\b
-单词边界(?<!\d|\d\.)
-如果在当前位置的左侧紧接着有一个或多个数字+ .
,则负向后搜索将使匹配失败。\d+
-1个以上数字(?!\S)
-如果在当前位置的右边不存在非空白字符,则负向超前将导致匹配失败(?!\.?\d)
-如果在当前位置的右边有一个可选的.
和一个数字,则负向超前将使匹配失败。