使用正则表达式从字符串中捕获两个组

时间:2011-12-09 13:39:12

标签: regex actionscript-3 flex flex4

我对正则表达式一无所知,目前我没有时间研究它们。

我有一个这样的字符串:

test (22/22/22)

我需要捕获数组中的test和日期22/22/22

测试字符串也可以是多个单词字符串:

test test(1) tes-t (22/22/22)

应该抓取test test(1) tes-t22/22/22

我不知道如何开始这个。我设法用括号捕获日期字符串:

(\(.*)

但这真的不会让我到处都是。

有人可以帮助我,并提供一个解释我应该如何捕捉这个?我有点失落。

由于

3 个答案:

答案 0 :(得分:1)

试试这个

^(.*)\(([^)]*)\)

在此处查看online on Regexr

将鼠标悬停在蓝色匹配上时,您可以看到捕获组的内容。

<强>解释

^ BeginOfLine

(.*)捕获组1 AnyCharacterExcept \ n,零次或多次

\(([^)]*)\)(捕获组2,AnyCharNotIn [)]零次或多次

答案 1 :(得分:1)

解释给定的正则表达式:(。*)\(([^]] +)\)

(。*)将匹配任何内容并捕获它(括号内捕获内部表达式匹配的内容)

\(是一个转义的括号。当你想捕捉一个括号时,你就会写下这个。

[^)] + 表示除括号外的任何内容(特殊字符不得在方括号内转义)一次或多次。

([^]] +)捕获上面解释的内容

\)匹配右括号

所以这个正则表达式会失败并捕获错误的字符串,如果你在第一个单词中有一个括号,如:

  

测试测试(1)tes-t(22/22/22)

我建议您考虑要捕获的信息是什么,以及如何从字符串的其余部分进行表达。这样做,构建有效的正则表达式会容易得多。

答案 2 :(得分:0)

此针适用于您的示例输入:

(.*)\(([^)]+)\)