在Regex中捕获组和货币符号

在Regex中捕获组和货币符号,regex,parsing,Regex,Parsing,我试图编写一个正则表达式,它接受一个字符串并将其解析为三个不同的捕获组: $3.99 APP DOWNLOAD – 200 11/19 – 1/21 3.99 Group 1: $3.99 APP DOWNLOAD – 200 Group 2: 11/29 – 1/28 Group 3: 3.99 有人有什么想法吗 我没有太多捕捉群体的经验,也不知道如何创建群体 i、 我相信这个表达式可以用来识别日期 /(\d{2}\/\d{2})/ 任何帮助都将不胜感激 : 因此,

我试图编写一个正则表达式,它接受一个字符串并将其解析为三个不同的捕获组:

$3.99 APP DOWNLOAD – 200 11/19 – 1/21 3.99

Group 1: $3.99 APP DOWNLOAD – 200
Group 2: 11/29 – 1/28
Group 3: 3.99
有人有什么想法吗

我没有太多捕捉群体的经验,也不知道如何创建群体

i、 我相信这个表达式可以用来识别日期

           /(\d{2}\/\d{2})/
任何帮助都将不胜感激

因此,我们有3个捕获组(
()
),由
\s*
分隔,这意味着0个以上的空白字符(这不是必需的,但它将从捕获的组中删除尾随空格)

第一个捕获组
[$]\d+[.]\d{2}.*?
匹配一个美元符号,后跟1+个数字,后跟一个句点,后跟2个数字,后跟0+个字符的延迟匹配(
*?
)。这个惰性匹配所做的是匹配任何内容,直到表达式中的下一个匹配(在本例中,是我们的下一个捕获组)

我们的第二个捕获组
\d{1,2}/\d{2}.*.\d{1,2}/\d{2}
匹配1-2位数字、斜杠和2位数字。然后我们使用另一个延迟匹配的任何字符,后跟另一个日期

我们的最终捕获组
\d+[.]\d{2}
查找1+个数字、一个句点和另外2个数字


注意:我使用了
~
作为分隔符,这样我们就不需要在日期中转义
/
。另外,我将
$
放在字符类中,因为我认为这看起来比转义它们更干净(
[$]
\$
)。两者都可以工作:)

捕获组基本上只是指在您感兴趣的领域周围放置(),这样您就可以提取它了。当您尝试它时会发生什么?
([$]\d+[.]\d{2}.*?)\s*(\d{1,2}/\d{2}.*?\d{1,2}/\d{2})\s(\d+[.]\d{2})