java - 为什么我的正则表达式在 android 的短信接收器上没有被正确解析?

标签 java android regex

在我的 android 应用程序中,我正在解析通过广播收到的短信。

我将我的正则表达式放在 string.xml 中

<string name="message_verification_regex">^.*Your Verification Code is \\d{4}.*$</string>

我要解析的消息是

1234567890:
Your Verification Code is 5840.
Team ABC
-
Reply via way2sms.com. Now available on your mobile.

我的正则表达式有什么问题?

最佳答案

该字符串为多行字符串,但点不匹配换行符。使用

<string name="message_verification_regex">^[\\s\\S]*?Your Verification Code is \\d{4}[\\s\\S]*$</string>

表达式 [\s\S] 匹配任何空白字符和任何非空白字符,这实际上意味着任何字符。

我必须补充一点,我不知道在使用带有此正则表达式的字符串的情况下是否真的有必要使用附加反斜杠转义反斜杠。因此也请尝试:

<string name="message_verification_regex">^[\s\S]*?Your Verification Code is \d{4}[\s\S]*$</string>

关于java - 为什么我的正则表达式在 android 的短信接收器上没有被正确解析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25228415/

相关文章:

java - 将 JLabel 放在 JPanel 之上

android - 调用setDataSource(FileDescriptor)方法时出现异常(失败。: status=0x80000000)

regex - Bash - Sed/Awk 用新行替换字符串

php - 如何使用 PHP 以任意顺序(12 个字母,其中 6 个字母组成一个单词)进行字符搜索?

java - 发现 : 'java.util.Date' , 需要: 'com.google.api.client.util.DateTime' GAE

python - python 中用于电子邮件解析的正则表达式

java - 在单个 BlackBerry 应用程序中同时显示两个单独的网页

java - 为什么我的扫描仪仍然需要一个空格字符

java - 尝试找到带有循环的数学函数之和的分辨率(java)

android - 使用gradle的android格式源代码