【问题标题】:Only capture outer parentheses as group in regex [duplicate]仅在正则表达式中将外括号捕获为组[重复]
【发布时间】:2011-08-26 07:53:02
【问题描述】:

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

我将我的模式分组如下,

"( ( date_variation_1 | date_variation_2) (some_other_info) ) "

现在,我想像这样提取匹配的字符串,
group0 - 整场比赛
group1 - 日期
group2 - 其他一些信息

我的问题是我需要在 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

【问题讨论】:

  • 另外,在 Java 中,您不需要外括号来匹配所有内容。 group(0) 总是得到匹配整个表达式的字符串。
  • @palo-ebermann 我知道,但我希望外括号匹配正则表达式的特定部分。甚至这些部分中的括号也被视为组。也许你误解了我的问题。

标签: java regex


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-20
    • 2013-10-31
    • 2011-09-19
    • 1970-01-01
    • 2017-09-13
    • 2011-03-11
    • 2017-01-07
    相关资源
    最近更新 更多