我对正则表达式一无所知,目前我没有时间研究它们。
我有一个这样的字符串:
test (22/22/22)
我需要捕获数组中的test
和日期22/22/22
。
测试字符串也可以是多个单词字符串:
test test(1) tes-t (22/22/22)
应该抓取test test(1) tes-t
和22/22/22
我不知道如何开始这个。我设法用括号捕获日期字符串:
(\(.*)
但这真的不会让我到处都是。
有人可以帮助我,并提供一个解释我应该如何捕捉这个?我有点失落。
由于
答案 0 :(得分:1)
试试这个
^(.*)\(([^)]*)\)
在此处查看online on Regexr
将鼠标悬停在蓝色匹配上时,您可以看到捕获组的内容。
<强>解释强>
^
BeginOfLine
(.*)
捕获组1 AnyCharacterExcept \ n,零次或多次
\(([^)]*)\)
(捕获组2,AnyCharNotIn [)]零次或多次
答案 1 :(得分:1)
解释给定的正则表达式:(。*)\(([^]] +)\)
(。*)将匹配任何内容并捕获它(括号内捕获内部表达式匹配的内容)
\(是一个转义的括号。当你想捕捉一个括号时,你就会写下这个。
[^)] + 表示除括号外的任何内容(特殊字符不得在方括号内转义)一次或多次。
([^]] +)捕获上面解释的内容
\)匹配右括号
所以这个正则表达式会失败并捕获错误的字符串,如果你在第一个单词中有一个括号,如:
测试测试(1)tes-t(22/22/22)
我建议您考虑要捕获的信息是什么,以及如何从字符串的其余部分进行表达。这样做,构建有效的正则表达式会容易得多。
答案 2 :(得分:0)
此针适用于您的示例输入:
(.*)\(([^)]+)\)