仅捕获外部括号作为正则表达式中的组

car*_*oud 3 java regex pattern-matching

我想使用正则表达式从java中的字符串中捕获日期和其他一些信息.

我将我的模式分组如下,

"( ( date_variation_1 | date_variation_2) (some_other_info) ) "
Run Code Online (Sandbox Code Playgroud)

现在,我想提取匹配的字符串,如下所示,
group0 - 整个匹配组1
- 日期
组2 - 其他一些信息

我的问题是我需要在date_variation_1,date_variation_2和some_other_info内部使用括号,这些括号也将被视为组分隔符.

有没有任何简单的解决方法,即将一些其他特殊章程定义为外部组分隔符,而不是括号?

date_variation_1:

"(((?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday|Tues|Thur|Thurs|Sun|Mon|Tue|Wed|Thu|Fri|Sat))" // Day Of Week 1
                        + "(\\s+)"  // White Space 1
                        + "((?:[0]?[1-9]|[1][012])[-:\\/.](?:(?:[0-2]?\\d{1})|(?:[3][01]{1}))[-:\\/.](?:(?:\\d{1}\\d{1})))(?![\\d])" // MMDDYY 1
                        + "(\\s+)" // White Space 2
                        + "((?:(?:[0-1][0-9])|(?:[2][0-3])|(?:[0-9])):(?:[0-5][0-9])(?::[0-5][0-9])?(?:\\s?(?:am|AM|pm|PM))?))"; // HourMinuteSec 1
Run Code Online (Sandbox Code Playgroud)

Jen*_*ens 7

您可以使用它(?:yourGroupHere)来定义非捕获组.