Java正则表达式/正则表达式

Java正则表达式/正则表达式,java,regex,Java,Regex,我有以下字符串: $500 has been received from username [rank]. 我使用下面的regex语句尝试获取支付的金额(500)和用户名 "^\\$(\\d+\\.?\\d*) has been received from ([^.]+)\\.$" 不幸的是,这提取了如下内容: "username [rank]" 我已尝试修改此项,因此,对于username变量,它将一直读取到“”,而不是一直读取到“.”,但是,多个反斜杠似乎让我感到困惑,我得到了意外的结

我有以下字符串:

$500 has been received from username [rank].
我使用下面的regex语句尝试获取支付的金额(500)和用户名

"^\\$(\\d+\\.?\\d*) has been received from ([^.]+)\\.$"
不幸的是,这提取了如下内容:

"username [rank]"
我已尝试修改此项,因此,对于username变量,它将一直读取到“”,而不是一直读取到“.”,但是,多个反斜杠似乎让我感到困惑,我得到了意外的结果

我需要使用什么正则表达式“代码”来提取余额和用户名?(这个级别对我没用)


非常感谢

这是家庭作业吗? 我问的原因是:

无论如何-根据本网站:

这将有助于:

^\$(\d+\.?\d*) has been received from (.*)\s\[(.*)\].$

正确的正则表达式应为:

 "^\\$(\\d*\\.?\\d*) has been received from.+\\[(.+?)\\]\\.$"
正则表达式将在方括号中找到什么。要查找所有数据,请使用:

 "^\\$(\\d*\\.?\\d*) has been received from (\\S+) \\[(.+?)\\]\\.$"

在这个正则表达式中,$1是500,$2是用户名,$3是秩。

如果这是一个固定的模式,您不需要正则表达式来实现这一点<代码>在空格上拆分,并获得第一个和最后一个部分之前的一个。这是可以接收的许多输入之一,如果first测试它是否符合模式,那么只在正则表达式中执行所有操作似乎更合逻辑。+1表示“不需要正则表达式”,它不是找到秩而不是用户名吗?我认为这就是重点?要查找用户名:“^\\$(\\d*\\.?\\d*)已从(\\S+[(.+?)\]\\.$)收到”,问题指出:“我需要使用什么正则表达式‘代码’来提取余额和用户名?”:)