Java 为什么我的正则表达式在android的短信接收器上解析不正确?

Java 为什么我的正则表达式在android的短信接收器上解析不正确?,java,android,regex,Java,Android,Regex,在我的android应用程序中,我正在解析通过广播接收的短信 我将正则表达式放在string.xml中 <string name="message_verification_regex">^.*Your Verification Code is \\d{4}.*$</string> 我的正则表达式有什么问题?字符串是多行字符串,但点与换行符不匹配。使用 <string name="message_verification_regex">^[\\s\\S]*?

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

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

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

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

字符串是多行字符串,但点与换行符不匹配。使用

<string name="message_verification_regex">^[\\s\\S]*?Your Verification Code is \\d{4}[\\s\\S]*$</string>
您可以尝试在正则表达式的开头添加
(?m)
。这样,
^
将匹配任何行的开头(而不是字符串的开头,即仅第一行的开头):

(?m^.*您的验证码是\\d{4}*$

谢谢你,伙计,它很有魅力。需要额外的反斜杠,因为字符串是从xml解析的,这就是原因。
<string name="message_verification_regex">^[\\s\\S]*?Your Verification Code is \\d{4}[\\s\\S]*$</string>
<string name="message_verification_regex">^[\s\S]*?Your Verification Code is \d{4}[\s\S]*$</string>
<string name="message_verification_regex">(?m)^.*Your Verification Code is \\d{4}.*$</string>